Rust 程式設計視訊教程(進階)——010_2Box 使用例項

linghuyichong發表於2020-01-26

頭條地址:https://www.ixigua.com/i677586170644791348...
B站地址:https://www.bilibili.com/video/av81202308/

box使用的第一種場景,例項。
(1)錯誤程式:

enum List {
    Cons(i32, List), //連結串列,類似於c語言的結構體定義:
                            //struct List{
                            //int,
                            //struct List L;//當然是錯誤寫法,c編譯器此時不知道L有多大,正確寫法應該是:Struct List *p;
                            //}
    Nil,
}

fn main() {
    use List::Cons;
    let list = Cons(1, Cons(2, Cons(3, Nil))); //要報錯,因為編譯器不知道給list分配多大的記憶體,類似於上面c語言那個錯誤寫法
    println!("Hello, world!");
}

(2)正確的方式使用Box

enum List {
    Cons(i32, Box<List>), //用Box就把它變成了一個指標,類似於c語言的結構體定義:
                                        //struct List{
                                        //int,
                                        //struct List *p;
                                        //}
    Nil,
}

fn main() {
    use List::Cons;
    let list = Cons(1,
    Box::new(Cons(2,
        Box::new(Cons(3,
            Box::new(Nil))))));
    println!("Hello, world!");
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

令狐一衝

相關文章