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个@符号,表示把匹配到的值...
to_string()) } } fn main() { let result = divide(10.0, 2.0); match result { Ok(value) => println!("Result: {}", value), Err(error) => println!("Error: {}", error), } } 总结 本篇博客介绍了Rust的各种数据类型,包括布尔类型、整数类型、浮点类型、字符类型、元组、数组、字符串、...
name: String::from("Bob"), age: 16, }; print_person_info(&alice); print_person_info(&bob); } 在这个示例中,我们定义了一个 Person 结构体,它有 name 和 age 两个字段。 print_person_info 函数接受一个 Person 的引用作为参数,并使用 match 匹配不同的引用模式。 第一个模式匹配的是姓名为 "...
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...
letbinary=matchboolean{false=>0,true=>1, }; println!("{} -> {}",boolean,binary); 这里不存在_ =>这个 match-arm。是由于 true 和 false这两个值已经全然覆盖boolean的全部值域。 枚举的样例 enum Message{Quit,ChangeColor(i32,i32,i32),Move{x:i32,y:i32},Write(String),}fn quit(){/*......
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...