则运行 _ 相应的语句,打印 something else。 解释一下上面的代码的match语句, match 是关键字。 x 是表达式。(非结构化的文本表达式) match语句内容包括在 {}大括号里; 括号里的每一个 => 叫做 match-arm。 大括号里能够包括随意多个 match-arm。 当x 存在可能不匹配的情况时,大括号里必须包括_ =>来覆盖...
name: String::from("Bob"), age: 16, }; print_person_info(&alice); print_person_info(&bob); } 在这个示例中,我们定义了一个 Person 结构体,它有 name 和 age 两个字段。 print_person_info 函数接受一个 Person 的引用作为参数,并使用 match 匹配不同的引用模式。 第一个模式匹配的是姓名为 "...
enum Order { New { order_id: i32 }, } let o1 = Order::New { order_id: 1 }; match o1 { Order::New { order_id: x } if x >= 0 && x <= 10 => { println!("order_id:{} between 0 and 10", x) } _ => {} } //与上面的写法等效(注意多了1个@符号,表示把匹配到的值...
phone:Option<String>, email:Option<String> } fn main(){ letuser=User{phone:None,email:"bm@vv.com".to_owned()}; match(user.phone,user.email){ (Some(phone),Some(emial))=>{ send_message(user.phone); send_email(user.email); log("优质客户"); }, (Some(phone),None)=>{ send_mes...
Write(String), ChangeColor(i32, i32, i32), } 1. 2. 3. 4. 5. 现在,我们使用match表达式处理不同的Message变体: fn process_message(msg: Message) { match msg { Message::Move { x, y } => println!("Move to coordinates (x={}, y={})", x, y), ...
match可用于访问枚举的内部成员并直接使用它们。 enum Outer { Double(Option<u8>, Option<String>), Single(Option<u8>), Empty } let get_inner = Outer::Double(None, Some(String::new())); match get_inner { Outer::Double(None, Some(st)) => println!("{}", st), ...
to_string()) } } fn main() { let result = divide(10.0, 2.0); match result { Ok(value) => println!("Result: {}", value), Err(error) => println!("Error: {}", error), } } 总结 本篇博客介绍了Rust的各种数据类型,包括布尔类型、整数类型、浮点类型、字符类型、元组、数组、字符串、...
在这个例子中,match语句根据option变量的值来执行不同的代码块。这里使用了模式匹配和范围匹配。 这些控制流结构是 Rust编程中的基础,它们使得编写逻辑清晰、结构良好的代码成为可能。通过合理使用这些结构,你可以构建出功能强大且易于维护的 Rust 程序。 函数 ...
println!("{}",matchv.get(0){ Some(value)=>value.to_string(), None=>"None".to_string() }); } 运行结果: 1 因为向量的长度无法从逻辑上推断,get 方法无法保证一定取到值,所以 get 方法的返回值是 Option 枚举类,有可能为空。 这是一种安全的取值方法,但是书写起来有些麻烦。如果你能够保证取值...
Rust中的match表达式 示例程序: usestd::io;usestd::cmp::Ordering;fnmain() {letmuts= String::new(); io::stdin().read_line(&muts).unwrap();letnum:i32= s.trim().parse().unwrap();matchnum.cmp(&23) { Ordering::Less =>println!("smaller"),...