rust 字符串到数字函数未将字符串转换为数字

7fyelxc5  于 2023-03-18  发布在  其他
关注(0)|答案(1)|浏览(209)

所以我有一个函数,用来把字符串转换成数字:

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

我试过隐藏传递的字符串,但它仍然没有将变量更改为数字。

h5qlskok

h5qlskok1#

不能更改变量的类型。
函数所做的是将字符串解析为数字,然后将结果抛出窗口。
你需要从函数返回它,然后重新绑定它,可能使用相同的名称(但它们仍然是不同的变量):

fn to_number(string: &str) -> u32 {
    string.trim().parse::<u32>().expect("Error")
}

let x: String = " 12 ".into();
let x = to_number(&x);
let y = x / 2;

相关问题