3 个版本
0.1.2 | 2022年12月11日 |
---|---|
0.1.1 | 2022年12月11日 |
0.1.0 | 2022年12月10日 |
#10 in #exposing
10,055 每月下载量
在 5 个crate中使用 (通过 blade-graphics)
5KB
66 行
hidden-trait
这个库是一个用于暴露特实现的过程宏。
我们试图解决的案例:一个库公开了一些具体结构供人们使用。可能有多个(例如,数学库中的 Vector2
、Vector3
、Vector4
),或者可能每个平台一个(Vulkan 与 Metal)。重要部分是 - 内部库想要让这个公开类型实现一个特质,但出于用户体验的原因,它不想公开这个特质。因此,“hidden-trait”来拯救。
mod hidden {
trait Foo {
fn foo(&self) -> u32;
}
pub struct Bar;
#[hidden_trait::expose]
impl Foo for Bar {
fn foo(&self) -> u32 {
42
}
}
}
fn main() {
let bar = hidden::Bar;
// calling the trait method as if it's ours
bar.foo();
}
依赖项
~1.5MB
~36K SLoC