match 表达式是这么一个处理枚举的控制流结构:它会根据枚举的成员运行不同的代码,这些代码可以使用匹配到的值中的数据。 enumEx2{a,b,c,d}fncmp(this:Ex2)->u32{matchthis{Ex2::a=>1,Ex2::b=>5,Ex2::c=>10,Ex2::d=>100,}}fnmain(){letnum=Ex2::c;println!("{}",cmp
解构嵌套的 struct 和 enum enumColor{Rgb(i32,i32,i32),Hsv(i32,i32,i32), }enumMessage{ Quit, Move {x:i32, y:i32},Write(String),ChangeColor(Color), }fnmain() {letmsg= Message::ChangeColor(Color::Hsv(0,160,255));matchmsg { Message::ChangeClolr(Color::Rgb(r, g, b)) => {prin...
Enum:把多种类型的数据归类到一起。但是这些类型的数据不能在该类型中同时存在。每次只能是一种类型。举个不知道恰当与否的例子,假定一个人只有一个职业。公司运行需要多种不同职业的人,Struct相当于一个公司,集合了不同职业的人。而为了方便管理,公司使用 Enum 对不同职业的人进行归类。 2022-09-16 回复...
enum Gender { Unspecified = 0, Female = 1, Male = 2, } 但是访问的时候稍微麻烦一点儿,因为我们需要在运行期间判断具体的类型,所以match匹配语法就成了必需品。if let是匹配语法的一种缩写形式。整体的匹配语法还是很友好的。 #[derive(Debug)] enum Gender { Unspecified, Female, Male, GenderInfo{x:...
enum Option<T> { None, Some(T), } match 做流程控制 先看看 match 的用法: fn plus_one(x: Option<i32>) -> Option<i32> { match x { None => None, Some(i) => Some(i + 1), } } let five = Some(5); let six = plus_one(five); ...
使用枚举具有更多优势。目前,我们需要更多地考虑我们的IP地址类型,因此我们无法存储实际的IP地址数据; 我们只知道那是什么。可以参考struct来解决该问题: fn main() { enum IpAddrKind { V4, V6, } struct IpAddr { kind: IpAddrKind, address: String, ...
enum Fruit { Apple, Banana, Orange, } fn main() { let fruit: Fruit = Fruit::Apple; match fruit { Fruit::Apple => println!("It's an apple!"), Fruit::Banana => println!("It's a banana!"), Fruit::Orange => println!("It's an orange!"), } } 四、其他数据类型 除了基本数据...
7题:根据注释中的说明得知要实现的功能只有单一分支,所以应采用 if let if let Location::Range(m,n) = loc{ println!("{:?}",loc); }; 8题: fn print_range_max(loc: &Location) -> i32{ match loc{ Location::Point(a) => *a, Location::Range(m,_) => *m, } }...
1、结构体(Struct) 2、枚举(Enum) 四、其他数据类型 1、切片(Slice) 2、Option类型 3、Result类型 总结 导言 Rust是一种现代的、安全的系统编程语言,注重内存安全和并发性。在Rust中,数据类型是程序中最基本的构建块之一。本篇博客将详细解释Rust的各种数据类型,并提供相关代码示例。
structIpv4Addr{// --snip--}structIpv6Addr{// --snip--}enumIpAddr{V4(Ipv4Addr),V6(Ipv6Addr),} 这些代码展示了可以将任意类型的数据放入枚举成员中:例如字符串、数字类型或者结构体。甚至可以包含另一个枚举!另外,标准库中的类型通常并不比你设想出来的要复杂多少。