在编写一些试图习惯Rust的小型初级练习时,我遇到了一些我不懂的输出Vec::get.这是代码:
fn main() {
let command = [('G', 'H'), ('H', '5')];
for i in 0..3 {
print!(" {} ", i);
println!("{:?}", command.get(i));
}
}
Run Code Online (Sandbox Code Playgroud)
输出是
0 Some(('G', 'H'))
1 Some(('H', '5'))
2 None
Run Code Online (Sandbox Code Playgroud)
我在Haskell涉足面前,我的意思是看了教程网站10分钟,跑回C++,但我记得读的东西Some和NoneHaskell的.我很惊讶在Rust看到这个.有人可以解释为什么.get()返回Some或None?
他们是一样的吗?我有时可以看到文档使用它们,就好像它们是平等的一样。
是否有一些编译器内置功能正在运行,或者是否有可能实现您自己的枚举及其可仅通过 Rust 代码全局访问的变体?如果是,怎么办?
编辑:抱歉,如果我不清楚。我的问题是关于Some和None,而不是Option。例如:
enum MyOption<T> {
MySome(T),
MyNone,
}
impl<T> MyOption<T> {
fn is_some(&self) -> bool {
match self {
Self::MySome(_) => true,
Self::MyNone => false,
}
}
}
Run Code Online (Sandbox Code Playgroud)
即使从“内部”,我也必须告诉编译器在Self. 那么有没有一种方法可以做到这一点,Option并让我的MySome和从我写的任何地方MyNone链接到它们?MyOption