Ответ 1
Прелюдия ржавчины, которая автоматически вставлена в каждый исходный файл, содержит следующую строку:
pub use option::Option::{self, Some, None};
Что приносит Option
и оба его варианта в области.
В соответствии с docs для Option
, Option
- это перечисление с вариантами Some<T>
и None
.
Почему можно ссылаться на Some
и None
без их квалификации?
Например, это прекрасно работает:
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`
Прелюдия ржавчины, которая автоматически вставлена в каждый исходный файл, содержит следующую строку:
pub use option::Option::{self, Some, None};
Что приносит Option
и оба его варианта в области.