视频地址
头条地址:https://www.ixigua.com/i6775861706447913485
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!");
}
网友评论