Rust 编程视频教程(进阶)——015_2 弱引用

视频地址

头条地址:https://www.ixigua.com/i677586170644791348...
B站地址:https://www.bilibili.com/video/av81202308/

源码地址

github地址:https://github.com/anonymousGiga/learn_rus...

讲解内容

用Weak创建树形数据结构
(1)定义结构体

use std::rc::{Rc, Weak}; 
use std::cell::RefCell; 

#[derive(Debug)] 
struct Node { 
    value: i32, 
    parent: RefCell<Weak<Node>>, 
    children: RefCell<Vec<Rc<Node>>>,
}

(2)使用示例

fn main() { 
    let leaf = Rc::new(Node { 
        value: 3, 
        parent: RefCell::new(Weak::new()), 
        children: RefCell::new(vec![]), 
    }); 
    println!("leaf parent = {:?}", leaf.parent.borrow().upgrade()); 
    let branch = Rc::new(Node { 
        value: 5, 
        parent: RefCell::new(Weak::new()), 
        children: RefCell::new(vec![Rc::clone(&leaf)]), 
    });  
    *leaf.parent.borrow_mut() = Rc::downgrade(&branch); 
    println!("leaf parent = {:?}", leaf.parent.borrow().upgrade());
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
令狐一冲
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
文章
255
粉丝
119
喜欢
308
收藏
128
排名:335
访问:2.8 万
私信
所有博文
社区赞助商