有意思的基础知识
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
原文地址:https://www.cnblogs.com/gyc567/p/11965101.html
时间: 2024-10-10 16:28:42