#traits #expose #proc-macro #hidden #exposing

macro hidden-trait

用于暴露特实现的过程宏

3 个版本

0.1.2 2022年12月11日
0.1.1 2022年12月11日
0.1.0 2022年12月10日

#10 in #exposing

Download history 1141/week @ 2024-03-14 1158/week @ 2024-03-21 1060/week @ 2024-03-28 1061/week @ 2024-04-04 1756/week @ 2024-04-11 1975/week @ 2024-04-18 2789/week @ 2024-04-25 3069/week @ 2024-05-02 3020/week @ 2024-05-09 2299/week @ 2024-05-16 2397/week @ 2024-05-23 2172/week @ 2024-05-30 2086/week @ 2024-06-06 2949/week @ 2024-06-13 2614/week @ 2024-06-20 2046/week @ 2024-06-27

10,055 每月下载量
5 个crate中使用 (通过 blade-graphics)

MIT 许可证

5KB
66

hidden-trait

Build Status Docs Crates.io

这个库是一个用于暴露特实现的过程宏。

我们试图解决的案例:一个库公开了一些具体结构供人们使用。可能有多个(例如,数学库中的 Vector2Vector3Vector4),或者可能每个平台一个(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