首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何返回RefCell值的引用

如何返回RefCell值的引用
EN

Stack Overflow用户
提问于 2021-01-23 14:18:37
回答 1查看 61关注 0票数 0

我正在实现双向链表来学习rust。

为了获得双向链接列表值,

我想返回对值的引用。

如果我只返回值,我就可以。

但如果我这样做,则列表值必须实现Clone特征...

我该怎么办?

这是我的示例代码。

代码语言:javascript
复制
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());
}
EN

回答 1

Stack Overflow用户

发布于 2021-01-23 18:05:27

您应该以RefCell do的形式返回Ref

代码语言:javascript
复制
    fn get_string(&self) -> Ref<i32>{
        return self.age.borrow_mut()
    }

除了它实现了Drop之外,它的行为应该或多或少像reference。它用在RefCell中,而不是引用中,因为它支持RefCell不变量,所以当你使用RefCell时,你应该使用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65856322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档