Crates.io | hazmat |
lib.rs | hazmat |
version | 0.1.0 |
source | src |
created_at | 2022-06-15 21:06:05.459054 |
updated_at | 2022-06-16 17:20:57.132534 |
description | A collection of helpers for working with hazardous materials in Rust crates. |
homepage | |
repository | https://github.com/str4d/hazmat |
max_upload_size | |
id | 606745 |
size | 19,009 |
hazmat
Rust libraryA collection of helpers for working with hazardous materials in Rust crates.
#[hazmat::suit]
Ever needed to expose an internal trait for downstream users to implement, that
shouldn't be usable outside of your crate? Add the #[hazmat::suit]
attribute
to the trait and it becomes "implement-only":
#[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));
}
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.