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())
}