我有一个简单的算法,可以用欧几里得算法计算两个数的最大公约数.如您所见,该函数获取两个I32的所有权,并返回一个I32.我对borrow 判断器的理解是,因为I32实现了复制,所以这段代码应该没问题.然而,编译器告诉我,我需要声明变量是可变的.
fn euclid_gcd(a: i32, b: i32) -> i32 {
while a != b {
if a > b {
a = a - b
}
else {
b = b - a
}
}
a
}
-->
个
fn euclid_gcd(mut a: i32, mut b: i32) -> i32 {
我已经进行了建议的更改,代码运行良好,但我仍然不明白为什么需要这样做.你能告诉我我错过了什么吗?