1 unstable release
Uses old Rust 2015
0.0.1 | May 10, 2015 |
---|
#817 in #enums
4KB
50 lines
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);
}