plus_one
函数不会将引用作为参数。不应该将五个人的所有权转交给plus_one
吗?为什么five
仍然可用?
fn plus_one(x: Option<i32>) -> Option<i32> {
match x {
None => None,
Some(i) => Some(i + 1),
}
}
fn main() {
let five = Some(5);
let six = plus_one(five);
println!("{}", five.unwrap());
println!("{}", six.unwrap());
let none = plus_one(None);
}
答案 0 :(得分:4)
i32
是Copy
。 Option
of something that is Copy
is also Copy
:
impl<T> Copy for Option<T>
where
T: Copy,
因此,将five
传递给plus_one
副本而不是移动。