我正在实现双向链表来学习rust。
为了获得双向链接列表值,
我想返回对值的引用。
如果我只返回值,我就可以。
但如果我这样做,则列表值必须实现Clone特征...
我该怎么办?
这是我的示例代码。
use std::rc::Rc;
use std::cell::RefCell;
struct Person{
age: Rc<RefCell<i32>>,
}
impl Person {
fn get_string<'a>(&'a self) -> &'a i32{
// acutually do while loop until reach designated index
let person_age = *self.age.borrow_mut();
// I want to return reference to i32
&person_age
}
}
fn main() {
let age = Rc::new(RefCell::new(10));
let person = Person{age:Rc::clone(&age)};
println!("person name is {}", person.get_string());
}发布于 2021-01-23 18:05:27
您应该以RefCell do的形式返回Ref
fn get_string(&self) -> Ref<i32>{
return self.age.borrow_mut()
}除了它实现了Drop之外,它的行为应该或多或少像reference。它用在RefCell中,而不是引用中,因为它支持RefCell不变量,所以当你使用RefCell时,你应该使用它。
https://stackoverflow.com/questions/65856322
复制相似问题