走进 Rust:枚举
Rust 大约 1495 字定义枚举
#[derive(Debug)]
enum IpAddrKind {
V4,
V6,
}
使用枚举
枚举同样可以使用impl
来实现结构体中的方法功能。
fn main() {
let m = Message::Write(String::from("hello"));
m.call();
}
enum Message {
Quit,
Move { x: i32, y: i32 },
Write(String),
ChangeColor(i32, i32, i32),
}
impl Message {
fn call(&self) {
// method body would be defined here
}
}
模式匹配
必须全匹配,若缺少一项,比如None
,编译将无法通过。
#[derive(Debug)]
enum UsState {
Alabama,
Alaska,
}
enum Coin {
Penny,
Nickel,
Dime,
Quarter(UsState),
}
fn value_in_cents(coin: Coin) -> u8 {
match coin {
Coin::Penny => 1,
Coin::Nickel => 5,
Coin::Dime => 10,
Coin::Quarter(state) => {
println!("State quarter from {:?}!", state);
25
},
}
}
fn main() {
value_in_cents(Coin::Quarter(UsState::Alabama));
}
搭配 Option
fn plus_one(x: Option<i32>) -> Option<i32> {
match x {
None => None,
Some(i) => Some(i + 1),
}
}
let five = Some(5);
let six = plus_one(five);
let none = plus_one(None);
_占位符
可以使用_
来代替默认行为,否则将无线穷举。
let some_u8_value = 0u8;
match some_u8_value {
1 => println!("one"),
3 => println!("three"),
5 => println!("five"),
7 => println!("seven"),
_ => (),
}
if let
使用if let
可以简化匹配。
let mut count = 0;
if let Coin::Quarter(state) = Coin::Quarter(UsState::Alaska) {
println!("State quarter from {:?}!", state);
} else {
count += 1;
}
阅读 2145 · 发布于 2020-07-13
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
Go 数字转字符串阅读 1267
-
面试题:OSI 模型和 TCP/I P模型各有几层阅读 3490
-
Java jcmd 命令查看 JVM 各种信息阅读 1628
-
Spring Boot 打包本地 jar 包到 war 包中阅读 1642
-
OpenResty 中使用 ngx.location.capture 完成第三方接口请求阅读 9438
-
Tomcat 禁止日志输出到 catalina.out阅读 4435
-
MySQL 备份工具 xtrabackup 安装和使用阅读 1845
-
Win10 激活码密钥阅读 3005
-
Notepad++ 的 HexEditor 插件下载安装阅读 6251
-
PHP 设置 json_encode 不转义中文阅读 2051