为什么Option <i32>在传递给函数时不被消耗?

时间:2018-03-14 09:29:15

标签: rust optional ownership

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);
}

1 个答案:

答案 0 :(得分:4)

i32CopyOption of something that is Copy is also Copy

impl<T> Copy for Option<T>
where
    T: Copy, 

因此,将five传递给plus_one副本而不是移动。