所以我有一个函数,用来把字符串转换成数字:
fn to_number(string: &mut String) {
string.trim().parse::<u32>().expect("Error");
}
如果我使用它,它似乎并没有改变传递给它的变量:
let mut x: String = " 12 ".into();
to_number(&mut x);
let y = x / 2; // Error here
产生的错误:
cannot multiply `{integer}` by `String`
the trait `Mul<String>` is not implemented for `{integer}`
the following other types implement trait `Mul<Rhs>`:
\<&'a f32 as Mul\<f32\>\>
\<&'a f64 as Mul\<f64\>\>
\<&'a i128 as Mul\<i128\>\>
\<&'a i16 as Mul\<i16\>\>
\<&'a i32 as Mul\<i32\>\>
\<&'a i64 as Mul\<i64\>\>
\<&'a i8 as Mul\<i8\>\>
\<&'a isize as Mul\<isize\>\>
and 49 others
我试过隐藏传递的字符串,但它仍然没有将变量更改为数字。
1条答案
按热度按时间h5qlskok1#
不能更改变量的类型。
函数所做的是将字符串解析为数字,然后将结果抛出窗口。
你需要从函数返回它,然后重新绑定它,可能使用相同的名称(但它们仍然是不同的变量):