match if
#![allow(unused)]
fn write_bar(size: u64){
match size{
o if o < => println!("{:?} less than 100", o),
o if o < && o > => println!("{:?} between 100-200", o),
_ => println!("{:?} bigger than 200", size),
}
}
fn main() {
write_bar();
write_bar();
write_bar();
}
println!("{:#?}", 1)
#[derive(Debug)]
struct Teacher<'a> {
name: &'a str,
age1: u8
} #[derive(Debug)]
struct Person<'a> {
name: &'a str,
age: u8
} fn main() {
let name = "Peter";
let mut age = ;
let peter = Person { name, age }; age = ;
let lilei = Teacher{ name:"Lilei", age1:age};
// 美化打印
println!("{:#?}", lilei);
println!("{:#?}", peter);
}
println! with param
#[derive(Debug)]
struct Complex { real: f32, imag: f32 } fn main() {
println!("The big range is {big:#?} and the small is {small}",
small = ,
big = &[, ]);
println!("Debug: {:#?}", Complex{real: 2.2, imag: 7.2});
}
try!
宏和 ?
一样
write!(f, "{}", value)?;
try!(write!(f, "{}", value));
闭包
|val| val + x, 输入和返回类型两者都可以自动推导,而输入变量 名必须指明。
- 声明时使用
||
替代()
将输入参数括起来。 - 函数体定界符(
{}
)对于单个表达式是可选的,其他情况必须加上。 - 有能力捕获外部环境的变量。
fn function (i: i32) -> i32 { i + 1 }
let closure_annotated = |i: i32| -> i32 { i + 1 };
valgrind 也可以检查rust的内存泄露
Drop
trait 包含在 prelude 中,所以无需导入它。