[易学易懂系列|rustlang语言|零基础|快速入门|(12)|Enums枚举]

释放双眼,带上耳机,听听看~!

[易学易懂系列|rustlang语言|零基础|快速入门|(12)]

有意思的基础知识

Enums

今天我们来讲讲枚举。

在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。 是一个被命名的整型常数的集合,枚举在日常生活中很常见,例如表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY就是一个枚举。

如下定义:


1
2
3
4
5
6
7
8
9
10
11
12
13
1enum Day {
2    Sunday,
3    Monday,
4    Tuesday,
5    Wednesday,
6    Thursday,
7    Friday,
8    Saturday
9}
10
11// The `Day` is the enum
12// Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday are the variants
13

枚举里面的值可以通过::来访问,如:


1
2
1Day::Sunday
2

每个枚举的值,可以有以下形式:

1.只有名字,没有值(单元变量)

2.未命名有序的值 (元组变量)

3.有命名的值(架构体变量)

请看代码:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
1enum FlashMessage {
2  Success, // A unit variant
3  Warning{ category: i32, message: String }, // A struct variant
4  Error(String) // A tuple variant
5}
6
7fn main() {
8  let mut form_status = FlashMessage::Success;
9  print_flash_message(form_status);
10
11  form_status = FlashMessage::Warning {category: 2, message: String::from("Field X is required")};
12  print_flash_message(form_status);
13
14  form_status = FlashMessage::Error(String::from("Connection Error"));
15  print_flash_message(form_status);
16}
17
18fn print_flash_message(m : FlashMessage) {
19  // Pattern matching with enum
20  match m {
21    FlashMessage::Success =>
22      println!("Form Submitted correctly"),
23    FlashMessage::Warning {category, message} => // Destructure, should use same field names
24      println!("Warning : {} - {}", category, message),
25    FlashMessage::Error(msg) =>
26      println!("Error : {}", msg)
27  }
28}
29

以上,希望对你有用。


1
2
1如果遇到什么问题,欢迎加入:rust新手群,在这里我可以提供一些简单的帮助,加微信:360369487,注明:博客园+rust
2

https://learning-rust.github.io/docs/b3.enums.html

给TA打赏
共{{data.count}}人
人已打赏
安全技术

C++中引用和指针的区别

2022-1-11 12:36:11

安全经验

因安全担忧,OpenBSD 将禁用英特尔 CPU 的超线程支持

2018-6-21 11:12:22

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索