5 个不稳定版本

0.2.2 2019年5月3日
0.2.1 2019年4月25日
0.2.0 2019年4月7日
0.1.0 2019年2月26日
0.0.0 2019年2月21日

#6#适配 中排名

每月下载 47 次
3 crates 中使用

ISC 许可证

51KB
581

lv2rs-urid: Rust 版的 LV2 urid 库适配原型。

这是 LV2 urid 库的安全且符合习惯的重写。它提供了将 URI 映射到整数的方法,这提高了它们的速度和内存占用。

这是一个冻结原型,因此,此 crate 的开发将不会继续在此。进一步开发将继续作为 rust-lv2 进行。

入门

如果您想开始使用 LV2,应从 根 crate 开始,并查看 [书籍](https://janonard.github.io/lv2rs-book/)。


lib.rs:

LV2 URID 库的 Rust 重写。

此 LV2 功能使您可以将 URI 映射到数字,并反向映射。

这是一个冻结原型,因此,此 crate 的开发将不会继续在此。进一步开发将继续作为 rust-lv2 进行。

使用

由于无法保证所需的指针在 instantiate 函数调用期间存活的时间,因此 URID 映射只能在插件 instantiate 函数中进行。以下是一个示例

 // import the required crates.
 extern crate lv2rs_core as core;
 extern crate lv2rs_urid as urid;
 use std::ffi::CStr;
 
 // A dummy plugin that doesn't actually do anything.
 struct UridPlugin {}

 impl core::Plugin for UridPlugin {
     fn instantiate(
         descriptor: &core::Descriptor,
         rate: f64,
         bundle_path: &CStr,
         features: Option<&core::FeaturesList>
     ) -> Option<Self> where Self: Sized {

         // Return `None` if there are no features.
         let features = features?;

         // Try to get the mapper and the un-mapper from the features list.
         let map = urid::Map::try_from_features(features)?;
         let unmap = urid::Unmap::try_from_features(features)?;

         // Create a URI, map it, and un-map it.
         let github_uri = CStr::from_bytes_with_nul(b"https://github.com\0").unwrap();
         let github_urid = map.map(github_uri);
         let github_uri = unmap.unmap(github_urid);

         Some(Self {})
     }

     // Blank implementations to keep the compiler quiet.
     fn connect_port(&mut self, _port: u32, _data: *mut ()) {}
     fn run(&mut self, _n_samples: u32) {}
 }

依赖项