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

有意思的基础知识

Enums

今天我们来讲讲枚举。

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

如下定义:

enum Day {
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
} // The `Day` is the enum
// Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday are the variants

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

Day::Sunday

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

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

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

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

请看代码:

enum FlashMessage {
Success, // A unit variant
Warning{ category: i32, message: String }, // A struct variant
Error(String) // A tuple variant
} fn main() {
let mut form_status = FlashMessage::Success;
print_flash_message(form_status); form_status = FlashMessage::Warning {category: 2, message: String::from("Field X is required")};
print_flash_message(form_status); form_status = FlashMessage::Error(String::from("Connection Error"));
print_flash_message(form_status);
} fn print_flash_message(m : FlashMessage) {
// Pattern matching with enum
match m {
FlashMessage::Success =>
println!("Form Submitted correctly"),
FlashMessage::Warning {category, message} => // Destructure, should use same field names
println!("Warning : {} - {}", category, message),
FlashMessage::Error(msg) =>
println!("Error : {}", msg)
}
}

以上,希望对你有用。

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

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

最新文章

  1. IOS 开发小技巧总结
  2. 用极简方式实现新浪新版本特性展示效果--view的图片轮播
  3. nios II--实验2——led硬件部分
  4. "未能找到类型或命名空间名称",引用dll的时候出错
  5. iOS仿京东分类菜单实例实现
  6. NOI 国家集训队论文集
  7. ARC代码和非ARC代码 混用
  8. ajaxFileUpload js判断类型
  9. Linux下安装zookeeper集群
  10. jQuery判断滚动条是上滚还是下滚,且是否到达底部或顶部
  11. genymotion模拟器配置X86模拟器加速器
  12. 详解C# Tuple VS ValueTuple(元组类 VS 值元组)
  13. C# 把Div变为滚动条
  14. DotNetCore 定时服务 HangFire
  15. raid功能中spanning和striping模式有什么区别?
  16. g第十四周,十五周作业
  17. Android进阶(二十一)创建Android虚拟机
  18. MySQL面试必考知识点:揭秘亿级高并发数据库调优与最佳实践法则
  19. python_vlc 播放http流
  20. 基于Live555实现RtspServer及高清高分辨率和高码率视频传输优化

热门文章

  1. JAVA初级面试题,附个人理解答案
  2. Selenium 2自动化测试实战15(多表单切换)
  3. python字符串判断
  4. ELK+Kafka日志收集环境搭建
  5. USACO刷题索引
  6. 【VS开发】模态对话框和非模态对话框
  7. scrapy 启动
  8. 听说这样可以加快oracle入表速度
  9. Luogu P2915 [USACO08NOV]奶牛混合起来
  10. windows 2008 创建域服务器问题 账户密码不符合要求