#[sealed]
This crate provides a convenient and simple way to implement the sealed trait pattern, as described in the Rust API Guidelines [1].
toml
[dependencies]
sealed = "0.2"
In the following code structs A
and B
implement the sealed trait T
,
the C
struct, which is not sealed, will error during compilation.
Examples are available in examples/
, you can also see a demo in demo/
.
```rust use sealed::sealed;
trait T {}
pub struct A;
impl T for A {}
pub struct B;
impl T for B {}
pub struct C;
impl T for C {} // compile error
fn main() { return } ```
The #[sealed]
attribute can be attached to either a trait
or an impl
.
It supports:
- Several traits per module
- Generic parameters
- Foreign types
- Blanket impl
s
```rust use sealed::sealed;
pub trait T {}
pub struct A; pub struct B(i32);
impl T for A {}
impl T for B {}
fn main() { return; } ```
```rust use sealed::sealed;
pub(crate) mod _sealfort { pub trait Sealed {} } pub trait T: _sealfort::Sealed {}
pub struct A; pub struct B(i32);
impl _sealfor_t::Sealed for A {} impl T for A {}
impl _sealfor_t::Sealed for B {} impl T for B {}
fn main() { return; } ```