Rust 程式設計視訊教程(進階)——015_2 弱引用

linghuyichong發表於2020-02-05

頭條地址: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 協議》,轉載必須註明作者和本文連結

令狐一衝

相關文章