Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust BigUint和;无法移出借用的内容“;错误_Rust - Fatal编程技术网

Rust BigUint和;无法移出借用的内容“;错误

Rust BigUint和;无法移出借用的内容“;错误,rust,Rust,我尝试使用中描述的迭代器方法: 我不确定这是否是由于BigUint类型不是原始的,因此它没有Copy特性。如何修改迭代器使其与FibStatestruct一起工作 fn下一步(&mut self)->选项{ fn next(&mut self) -> Option<BigUint> { let b_next = &self.a + &self.b; let b_prev = std::mem::replace(&mut self

我尝试使用中描述的迭代器方法:

我不确定这是否是由于
BigUint
类型不是原始的,因此它没有
Copy
特性。如何修改迭代器使其与
FibState
struct一起工作

fn下一步(&mut self)->选项{
fn next(&mut self) -> Option<BigUint> {
    let b_next = &self.a + &self.b; 
    let b_prev = std::mem::replace(&mut self.b, b_next);
    self.a = b_prev;
    Some(self.a.clone())
}
让b_next=&self.a+&self.b; 让b_prev=std::mem::replace(&mut self.b,b_next); self.a=b_prev; 一些(self.a.clone()) }
  • BigUint
    不实现
    Copy
    ,但trait按值获取两个参数
    BigUint
    也为引用实现了
    Add
    ,因此您可以改为获取值的引用

  • 我们想用下一个
    b
    值替换
    b
    的当前值,但我们需要保留旧值。我们可以用它

  • 将旧的
    b
    值分配给
    a
    很简单

  • 现在我们希望返回
    a
    中的值,因此需要返回整个值

  • BigUint
    类型不是原语,因此它没有
    Copy
    特性

    作为原语的东西和实现
    复制
    特征的东西彼此无关。用户类型可以实现
    Copy
    ,而某些原语不实现
    Copy

    另见:

    fn next(&mut self) -> Option<BigUint> {
        let b_next = &self.a + &self.b; 
        let b_prev = std::mem::replace(&mut self.b, b_next);
        self.a = b_prev;
        Some(self.a.clone())
    }