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个@符号,表示把匹配到的值...
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"), Ordering::Greater =>println!("bigger"), ...
这是匹配中最简单的 let x = 1; match x { 1 => println!(" x is 壹"), 2 => println!(" x is 贰"), 3 => println!(" x is 叁"), _ => println!(" x is 其它"), } //2. match匹配命名变量。 它的主要作用是捕获变量,以便打印或者他用 let x = Some(5); let y = 10; ...
name: String::from("Bob"), age: 16, }; print_person_info(&alice); print_person_info(&bob); } 在这个示例中,我们定义了一个 Person 结构体,它有 name 和 age 两个字段。 print_person_info 函数接受一个 Person 的引用作为参数,并使用 match 匹配不同的引用模式。 第一个模式匹配的是姓名为 "...
to_string()) } } fn main() { let result = divide(10.0, 2.0); match result { Ok(value) => println!("Result: {}", value), Err(error) => println!("Error: {}", error), } } 总结 本篇博客介绍了Rust的各种数据类型,包括布尔类型、整数类型、浮点类型、字符类型、元组、数组、字符串、...
println!("{}",matchv.get(0){ Some(value)=>value.to_string(), None=>"None".to_string() }); } 运行结果: 1 因为向量的长度无法从逻辑上推断,get 方法无法保证一定取到值,所以 get 方法的返回值是 Option 枚举类,有可能为空。 这是一种安全的取值方法,但是书写起来有些麻烦。如果你能够保证取值...
在这个例子中,match语句根据option变量的值来执行不同的代码块。这里使用了模式匹配和范围匹配。 这些控制流结构是 Rust编程中的基础,它们使得编写逻辑清晰、结构良好的代码成为可能。通过合理使用这些结构,你可以构建出功能强大且易于维护的 Rust 程序。 函数 ...
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本身也是个表达式,Rust就是基于表达式的语言。 表达式是能够作为右值使用的。 所谓右值,就是看一个表达式是否能放到等号的=等号右边。 比方x = 1+2,1+2能够发到=的右边。所以1+2能够是个右值; 可是1+2 = x,这个语句中1+2不能放到=等号的左边,所以1+2不可能是左值。
} impl File { fn new(name: &str) -> File { File { name: String::from(name), data: Vec::new(), state: FileState::Closed, } } } impl Display for FileState { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { FileState::Open => writ...