Rust 学习笔记 09:枚举与模式匹配
Rust 学习笔记 09:枚举与模式匹配 “Null References: The Billion Dollar Mistake.” – Tony Hoare Go 语言没有枚举(只有 iota 常量),也没有代数数据类型,更没有模式匹配。所以这一章对于 Go 开发者来说,是全新的世界。 1. 它是枚举,但又不仅仅是枚举 在 C/Go 中,Enum 通常只是整数的别名。 但在 Rust 中,Enum 可以携带数据,而且每个变体携带的数据类型可以不同。 1enum Message { 2 Quit, // 没有数据 3 Move { x: i32, y: i32 }, // 包含匿名结构体 4 Write(String), // 包含 String 5 ChangeColor(i32, i32, i32), // 包含元组 6} 这一个 Enum 类型,就涵盖了消息系统的所有可能性。这比 Go 中定义一堆 struct 加上 interface 要简洁直观得多。 2. Option 枚举:告别 Null Rust 没有 null。 那我想要表达"变量可能为空"怎么办? Rust 标准库提供了一个枚举 Option<T>: ...