小编Eps*_*pse的帖子

Rust使用移动的值

使用以下功能时:

fn factors(number: &BigInt) -> Vec<BigInt> {
    let mut n = number.clone();
    let mut i: BigInt = ToBigInt::to_bigint(&2).unwrap();
    let mut factors = Vec::<BigInt>::new();

    while i * i <= n {
        if (n % i) == ToBigInt::to_bigint(&1).unwrap() {
            i = i + ToBigInt::to_bigint(&1).unwrap();
        }
        else {
            n = n/i as BigInt;
            factors.push(i);
        }
        i = i + ToBigInt::to_bigint(&1).unwrap();
    }
    if n > i {
        factors.push(n);
    }
    factors
}
Run Code Online (Sandbox Code Playgroud)

我每次都会得到移动的值错误i或者n被使用,从行开始while,也在if.我读过关于借用的内容,我理解得很清楚,但这件事我不明白.我根本没有"复制"这个值,所以我没有看到任何地方我可能失去变量的所有权.

rust

3
推荐指数
1
解决办法
2152
查看次数

标签 统计

rust ×1