课程名称:轻松实现Rust系统入门,实战编译器开发
课程章节: 第3章 Rust基本数据类型 3.11 枚举
主讲老师:叶枭
课程内容:
今天学习的内容是 Rust 中的枚举类型。
枚举类型
枚举类型也叫枚举,用来组织有限的值,归为一个类型。
使用 enum
关键字来声明一个枚举类型,枚举类型的成员称为变体。
枚举有多种不同的写法,包括:
- 不带值的枚举
- 带值的枚举
- 带参数的枚举
比如,定义一个行星类型的枚举,它的成员有两个:Mars 和 Earth:
enum Planet {
Mars,
Earth,
}
如果没有给成员显式赋值,那么枚举值默认从 0 开始存储。
在声明枚举类型时,可以显式的给成员赋值。比如定义一个 HTTP 响应的状态码:
enum State {
OK: 200,
NotFound: 404,
Error: 500,
}
在声明枚举类型时,还可以给成员带上参数,类似于函数的调用。
enum IpAddr {
IPv4(u8, u8, u8, u8),
IPv6(u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8),
}
这种类型的枚举是 Rust 和其他语言差别最大的一种枚举。
模式匹配
要使用枚举类型,需要使用模式匹配。
enum IpAddr {
IPv4(u8, u8, u8, u8),
IPv6(u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8),
}
fn main() {
let localhost: IpAddr = IpAddr::IPv4(127, 0, 0, 1);
match localhost {
IpAddr::IPv4(a, b, c, d) => {
println!("{} {} {} {}", a, b, c, d)
}
_ => {} // 任何非 IPv4 类型走这条分支
}
}
课程收获
这节课学习了 Rust 中的枚举类型, 和结构体类型一样,枚举主要用来创建用户自定义的类型,不同之处是它会包含所有可被列举的值。要使用枚举类型的值,需要配合模式匹配。
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦