| Crates.io | hazmat |
| lib.rs | hazmat |
| version | 0.1.0 |
| created_at | 2022-06-15 21:06:05.459054+00 |
| updated_at | 2022-06-16 17:20:57.132534+00 |
| 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.