例如:
enum Foobar {
Foo(i32),
Bar(i32),
}
fn main() {
let a: Result<i32, i32> = Result::Ok(1);
let b: Result<i32, i32> = Ok(1);
let c: Foobar = Foobar::Foo(1);
let d: Foobar = Foo(1); // Error!
}
Run Code Online (Sandbox Code Playgroud)
我必须写Foobar::Foo()而不是只是Foo(),但我可以写Ok()没有Result::.这是为什么?我有同样的问题Some和None.
Fra*_*gné 11
一个use项目可以添加枚举变量的命名空间,这样你就不必通过枚举的名字前缀他们.
use Foobar::*;
enum Foobar {
Foo(i32),
Bar(i32)
}
fn main() {
let a: Result<i32, i32> = Result::Ok(1);
let b: Result<i32, i32> = Ok(1);
let c: Foobar = Foobar::Foo(1);
let d: Foobar = Foo(1); // Not an error anymore!
}
Run Code Online (Sandbox Code Playgroud)
之所以Ok,Err,Some并None提供无条件的是,前奏有一些use项目,这些名称添加到前奏(除枚举本身):
pub use option::Option::{self, Some, None};
pub use result::Result::{self, Ok, Err};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
160 次 |
| 最近记录: |