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