铁锈也会通过
pattern matching
struct Person {
name: String,
address: String,
}
fn get_name(Person { name, .. }: Person) -> String {
name
}
fn main() {
let people = vec![Person {
name: String::from("Sally"),
address: String::from("1234 E Test St."),
}];
let names: Vec<_> = people.into_iter().map(get_name).collect();
println!("{:?}", names);
}
然而,你通常不会看到人们在函数签名中进行这种类型的分解。它在自动生成的文档中公开了更多的实现。更常见的是在函数内部立即看到它:
fn get_name(person: Person) -> String {
let Person { name, .. } = person;
name
}
而且人们不经常在
let
fn get_name(person: Person) -> String {
person.name
}
这个特殊的函数不是
.map(|p| p.name)
你原来的打字稿中有很多东西不能直接翻译成锈迹:
-
概念
Partial
-
锈菌载体本身不能实现
map
以及那些行动所属的朋友
iterators
懒惰的
,这使得生锈比相应的JS更有效。
-
如果我想破坏一个以上的财产呢?
如果需要匿名字段集合,通常使用
元组
fn get_name_things(Person { name, .. }: Person) -> (String, usize) {
(name, 42)
}