docs.rs failed to build extensible-0.0.1
Please check the build logs and, if you believe this is docs.rs' fault, open an issue.
Please check the build logs and, if you believe this is docs.rs' fault, open an issue.
rust-extensible
Extensible enums for Rust
This is a plugin form of this RfC.
Basically, if an enum is marked #[extensible]
, this plugin will prevent its use in a match statement lacking a wildcard. This lets library authors define stable enums whilst
keeping the flexibility of extending them later.
#[extensible]
enum Foo {
Bar,
Baz(u8),
Quux
}
pub use Foo::*;
fn main() {
let x = Bar;
let mut out = match x {
Bar => 1u8,
Baz(y) => y,
Quux => 0u8,
// There is no wildcard here, so it will not compile
};
println!("{}", out);
// This is fine
out = match x {
Bar => 1u8,
Baz(y) => y,
_ => 0u8, // THis will compile fine
};
println!("{}", out);
}