Rust中文翻译33
来源:互联网 发布:中经网产业数据库 编辑:程序博客网 时间:2024/05/29 03:43
5.13 枚举
Rust中的枚举是一个可以代表一个或多个可能值的类型:
enum Message {
Quit,
ChangeColor(i32, i32, i32),
Move { x: i32, y: i32 },
Write(String),
}
每一个变量都可以成为这些值的其中一个.定义一个枚举的语法复用了定义一个结构体的语法,你可以顶一个一个没有数据的变量(就像一个单元结构体),有名子的变量,和无名变量(就像一个元组).和结构体中分开的定义不同,一个枚举就是一个类型.一个枚举的值可以是任意一个变量.因此,一个枚举有时被称为"集合类型":枚举的所有可能值放在一个可能值的集合中.
我们使用::语法来使用每一个变量的名字: 他们由枚举自己的名字确定作用域. 这就允许下述情况发生:
let x: Message = Message::Move { x: 3, y: 4};
enum BoardGameTurn {
Move { squares: i32 },
Pass,
}
let y: BoardGameTurn = BoardGameTurn::Move { squares: 1};
两个变量都叫做Move,但是因为他们存在于枚举名字的作用域中,所以他们不会引起冲突.
一个枚举类型的包含了这个变量是什么的信息,作为任何附加在变量上的数据的信息.这通常被称为"标签联合"(tagged union),因为一个包含标签的数据可以说明他是什么类型.编译器使用这些信息来确保你正在安全的使用枚举.例如,你不能析构一个枚举值:
fn process_color_change(msg: Message) {
let Message::ChangeColor(r, g, b) = msg;
}
不支持这种操作看起来会很受限制,但是这种限制我们可以克服.有两种方法:我们自己实现相等性,或者使用match模式,下一节会讲到.我们不知道Rust如何实现相等性,但是我们可以在traits一节找到原因.
0 0
- Rust中文翻译33
- Rust中文翻译1
- Rust中文翻译2
- Rust中文翻译3
- Rust中文翻译4
- Rust中文翻译5
- Rust中文翻译6
- Rust中文翻译7
- Rust中文翻译8
- Rust中文翻译9
- Rust中文翻译10
- Rust中文翻译11
- Rust中文翻译12
- Rust中文翻译13
- Rust中文翻译14
- Rust中文翻译15
- Rust中文翻译16
- Rust中文翻译17
- Linux查看系统cpu个数、核心数、线程数
- rpc_server.py经典python程序实例
- windows Server2008 iis7 部署MVC4 项目的时候出现 403 错误
- 自定义导航栏去掉黑条
- C#方法的封装
- Rust中文翻译33
- 关于烂代码的那些事
- SUSE HA的配置
- 在Ubuntu下使用Apache2建立虚拟主机
- redis技术之旅八
- Servlet实现文件上传的几种方法
- 批量(bulkload)载入数据到hbase
- 最短路 一个人的旅行
- java 之代理模式