Rust 入门 枚举
枚举
- 枚举(enumerations)允许我们列举所有可能的值来定义一个类型
- 这些可能值被称为枚举的成员(variants) 有时称为变体
定义枚举
enum IpAddrKind {
V4,
V6,
}
枚举值
let four = IpAddrKind::V4;
let six = IpAddrKind::V6;
- 枚举的变体都位于标识符的命名空间下, 使用户
::
进行访问
将数据存入枚举值中
enum IpAddrKind {
V4(u8,u8,u8,u8),
V6(String),
}
fn main() {
let _four = IpAddrKind::V4(127, 0, 0, 1);
let _six = IpAddrKind::V6(String:from("::1"));
}
枚举方法
- 和结构体方法的编写一样
impl IpAddrKind {
fn ping(&self) {
// TODO
}
}
Option 枚举
- Option 枚举存在于标准库中, 位于Prelude(预导入模块) 中
- 描述某个值(数据类型)可能存在或者不存在的情况
// 标准库中的Option枚举
// <T> 表示泛型, 以后会讲
enum Option<T> {
Some(T),
None,
}
- 使用 Option 枚举带表达空值
fn main() {
let some_number: Option<i32> = Some(5);
let absent_number: Option<i32> = None;
}
- Option<T> 和 T 是不同的类型, 不可以把 Option<T> 直接作为 T 来使用
使用 match 匹配枚举
- match 表达式 可以从枚举中提取绑定的值
fn main() {
let number = Option::Some(5);
match number {
Option::Some(value) => println!("value={}",value),
Option::None => println!("null"),
}
}
使用 if let 匹配枚举
- if let 处理之关系的一种匹配模式, 忽略其他匹配模式
fn main() {
let number = Option::Some(5);
if let Some(value) = number {
println!("value={}", value)
}
}
- if let 常用于处理错误
fn main() {
let number: Option<i32> = Option::None;
if let Option::None = number {
eprintln!("null pointer exception");
}
}
- if let 也可以配合
else
分支使用
如果对我分享的内容感兴趣的话 记得关注我得动态
求推荐 求收藏 求转发 求关注
求推荐 求收藏 求转发 求关注