【问题标题】:Why don't Option's Some and None variants need to be qualified?为什么不需要限定 Option 的 Some 和 None 变体?
【发布时间】:2015-08-13 07:51:32
【问题描述】:

根据docs for OptionOption 是一个具有变体Some<T>None 的枚举。

为什么可以在没有限定条件的情况下引用SomeNone

例如,这很好用:

let x = Option::Some(5);
match x {
    Some(a) => println!("Got {}", a),
    None => println!("Got None"),
}

但是编译失败:

enum Foo<T> {
    Bar(T),
    Baz,
}
let x = Foo::Bar(5);
match x {
    Bar(a) => println!("Got {}", a),
    Baz => println!("Got Baz"),
}

编译器的错误是unresolved enum variant, struct or const `Bar`

【问题讨论】:

    标签: rust


    【解决方案1】:

    Rust prelude 会自动插入到每个源文件中,它包含这一行:

    pub use option::Option::{self, Some, None};
    

    这带来了Option 及其两个变体的范围。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-13
      相关资源
      最近更新 更多