【发布时间】:2017-01-22 18:14:03
【问题描述】:
我有
fn plus_one(x: &i32) -> i32 {
x + 1
}
fn plus_one_star(x: &i32) -> i32 {
*x + 1
}
fn plus_one_mut(x: &mut i32) -> i32 {
x + 1
}
fn plus_one_mut_star(x: &mut i32) -> i32 {
*x + 1
}
fn main() {
let a: i32 = 5;
let mut b: i32 = 5;
println!("{:?}", plus_one(&a));
println!("{:?}", plus_one_star(&a));
println!("{:?}", plus_one_mut(&mut b));
println!("{:?}", plus_one_mut_star(&mut b));
// I expect all to print '6' as I never actually mutate b
}
第三个函数plus_one_mut 编译失败:error[E0369]: binary operation `+` cannot be applied to type '&mut i32'
为什么这个带有可变引用的函数编译失败?
【问题讨论】: