函数调用后生锈的可变性要求
mutability requirement in rust after a function call
为什么mut
不需要
#[allow(dead_code)]
fn addo2(v: Vec<u64>, oi: Option<u64>) -> Vec<u64> {
oi.into_iter().fold(v, |mut v, i| add(v, i)) //warning: variable does not need to be mutable
}
#[allow(dead_code)]
fn add(mut v: Vec<u64>, i: u64) -> Vec<u64> {
v.push(i);
v
}
如预期的那样,此代码需要它时
fn addo(v: Vec<u64>, oi: Option<u64>) -> Vec<u64> {
oi.into_iter().fold(v, |mut v, i| {
v.push(i);
v
})
}
v.push(i); v
和add(v, i)
的区别是前者就地修改v
,而后者通过v
转换为 add
,并返回一个(可能不相关的)值。 mut
指修改您拥有的东西,因此在将所有权转让给他人时不适用。
为什么mut
不需要
#[allow(dead_code)]
fn addo2(v: Vec<u64>, oi: Option<u64>) -> Vec<u64> {
oi.into_iter().fold(v, |mut v, i| add(v, i)) //warning: variable does not need to be mutable
}
#[allow(dead_code)]
fn add(mut v: Vec<u64>, i: u64) -> Vec<u64> {
v.push(i);
v
}
如预期的那样,此代码需要它时
fn addo(v: Vec<u64>, oi: Option<u64>) -> Vec<u64> {
oi.into_iter().fold(v, |mut v, i| {
v.push(i);
v
})
}
v.push(i); v
和add(v, i)
的区别是前者就地修改v
,而后者通过v
转换为 add
,并返回一个(可能不相关的)值。 mut
指修改您拥有的东西,因此在将所有权转让给他人时不适用。