RUST编程

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

2020-02-07  本文已影响0人  令狐壹冲

视频地址

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

源码地址

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

讲解内容

用Weak<T>创建树形数据结构
(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());
}
上一篇 下一篇

猜你喜欢

热点阅读