当前位置:  开发笔记 > 编程语言 > 正文

传递基础参考字段的生命周期?

如何解决《传递基础参考字段的生命周期?》经验,为你挑选了0个好方法。

我正在尝试制作两个在底层数据集上运行的结构体; 一个提供不可变的"读取"操作,另一个允许修改.为此,我需要能够在修改对象中使用读取函数 - 因此,我在修改器函数中创建一个临时的新读取对象,并查看基础数据.

这是一些代码:

struct Read<'db> {
    x: &'db i32
}

impl<'db> Read<'db> {
    pub fn get(&'db self) -> &'db i32 { self.x }
}

struct Write<'db> {
    x: &'db mut i32
}

impl<'db> Write<'db> {
    fn new(x: &mut i32) -> Write { Write{x: x} }

    fn as_read(&'db self) -> Read<'db> {
        Read{x: self.x}
    }

    pub fn get(&'db self) -> &'db i32 { self.as_read().get() }
}    


fn main() {
    let mut x = 69i32;
    let y = Write::new(&mut x);
    println!("{}", y.get());
}

它不会编译-它似乎是,尽管我尽了最大努力,参考的寿命从返回Read::get被绑定到Write::get的范围,而不是Write'db寿命.我怎样才能编译?(并且,我想做的是什么?这是最简单/最简洁的方式吗?)

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有