#枚举 #插件

nightly extensible

一个用于防止在标记为 '可扩展' 的枚举上使用穷举匹配的插件

1 个不稳定版本

使用旧的 Rust 2015

0.0.1 2015年5月10日

132#枚举

MPL-2.0 许可证

4KB
50 代码行,不包括注释

rust-extensible

Rust 的可扩展枚举

这是一个基于这个 RfC的插件。

基本上,如果一个枚举被标记为 #[extensible],这个插件将防止在缺少通配符的匹配语句中使用它。这允许库作者定义稳定的枚举,同时保留以后扩展它们的灵活性。

#[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);
}

无运行时依赖