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 中使用
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) {}
}