#traits #capability #safety #helper #implement-only

hazmat

在 Rust 包中处理危险品的一组辅助工具

2 个不稳定版本

0.1.0 2022年6月16日
0.0.0 2022年6月15日

#2139Rust 模式

MIT/Apache 许可协议

9KB

hazmat Rust 库

在 Rust 包中处理危险品的一组辅助工具。

#[hazmat::套装]

是否需要将内部 trait 公开供下游用户实现,但又不想让它在你的包外可用?给这个 trait 添加 #[hazmat::suit] 属性,它就会变成“仅实现”。

#[hazmat::suit]
pub trait LowLevel {
    fn low_level(self) -> bool;
}

struct DownstreamType;

#[hazmat::suit]
impl LowLevel for DownstreamType {
    fn low_level(self, other: Self) -> bool {
        true
    }
}

fn use_low_level() {
    let a = DownstreamType;
    let b = DownstreamType;

    // This won't compile outside of the crate in which the trait is defined.
    assert!(a.low_level(b, LowLevelCap));
}

许可协议

许可协议为以下之一:

由您选择。

贡献

除非您明确声明,否则根据 Apache-2.0 许可协议定义,您提交给作品中的任何有意贡献都将按上述方式双许可,而无需任何额外的条款或条件。

依赖关系

~1.5MB
~34K SLoC