println!("Tell me about {:?}", triple); // match 可以解构一个元组 match triple { // 解构出第二个和第三个元素 (0, y, z) => println!("First is `0`, `y` is {:?}, and `z` is {:?}", y, z), (1, ..) => println!("First is `1` and the rest doesn't matter"), // `..` 可用来忽略元组的其余部分 _ => println!("It doesn't matter what they are"), // `_` 表示不将值绑定到变量 }
解构时的不关心的项目
1 2 3 4 5 6 7 8 9
structPerson { name: String, age: i32, }
let peter = Person { name: "Peter".to_string(), age: 10 }; // 只想取出 peter 的 name 到 一个新的变量 peter_name,不关心age let Person { name: peter_name, age: _ } = peter; println!("{}", &peter_name);
let peter = Person { name: "Peter".to_owned(), age: 10, desc: "备注1".to_owned() }; let adam = Person { name: "adam".to_owned(), ..peter }; println!("{:?}", adam);
range的简写
for里的写法
1 2 3 4
// 循环1到99 for n in1..=99 { println!("{}", n); }
切片里的写法
1 2
let ys: Vec<i32> = vec![1, 2, 3, 4, 5]; let b: &[i32] = &ys[1..4];
match里的写法
1 2 3 4 5
let num: i32 = 10; match num { 13..19 => println!("{}", "13到18"), _ => {} }
println!("Tell me about {:?}", triple); // match 可以解构一个元组 match triple { // 解构出第二个和第三个元素 (0, y, z) => println!("First is `0`, `y` is {:?}, and `z` is {:?}", y, z), (1, ..) => println!("First is `1` and the rest doesn't matter"), // `..` 可用来忽略元组的其余部分 _ => println!("It doesn't matter what they are"), // `_` 表示不将值绑定到变量 }
'
生命期
1 2 3 4 5
// `print_refs` 接受两个 `i32` 的引用,它们有不同的生命周期 `'a` 和 `'b`。 // 这两个生命周期都必须至少要和 `print_refs` 函数一样长。 fnprint_refs<'a, 'b>(x: &'ai32, y: &'bi32) { println!("x is {} and y is {}", x, y); }
let username = <Form as UsernameWidget>::get(&form); assert_eq!("rustacean".to_owned(), username); let age = <Form as AgeWidget>::get(&form); assert_eq!(28, age); }
fnmain() { println!("Tell me what type of person you are");
match age() { 0 => println!("I haven't celebrated my first birthday yet"), // 可以直接匹配(`match`) 1 ..= 12,但那样的话孩子会是几岁? // 相反,在 1 ..= 12 分支中绑定匹配值到 `n` 。现在年龄就可以读取了。 n @ 1 ..= 12 => println!("I'm a child of age {:?}", n), n @ 13 ..= 19 => println!("I'm a teen of age {:?}", n), // 不符合上面的范围。返回结果。 n => println!("I'm an old person of age {:?}", n), } }