vector - 如何从 Rust 结构数组中获取字段值数组?

标签 vector struct rust iterator map-function

我想将结构数组映射到字段值数组。我该怎么做?

pub struct Person {
    name: String
} 

fn main() {
    let my_people = vec![
        Person {
            name: "Bob".to_string(),
        },
        Person {
            name: "Jill".to_string(),
        },
        Person {
            name: "Rakim".to_string(),
        },
    ];
    //map my_people to ["Bob", "Jill", "Rakim"]
}

最佳答案

您有两种可能的解决方案,具体取决于您是要克隆名称还是借用名称。以下两种解决方案:

pub struct Person {
    name: String,
}

fn people_names_owned(people: &[Person]) -> Vec<String> {
    people.iter().map(|p| p.name.clone()).collect()
}

fn people_names_borrowed(people: &[Person]) -> Vec<&str> {
    people.iter().map(|p| p.name.as_ref()).collect()
}

fn main() {
    let my_people = vec![
        Person {
            name: "Bob".to_string(),
        },
        Person {
            name: "Jill".to_string(),
        },
        Person {
            name: "Rakim".to_string(),
        },
    ];
    println!("{:?}", people_names_owned(&my_people));
    println!("{:?}", people_names_borrowed(&my_people));
}

playground

关于vector - 如何从 Rust 结构数组中获取字段值数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65443671/

相关文章:

C++ 以独立于平台的方式序列化和压缩 vector<structs>

c++ - 在指针 vector 中使用基类是否安全

c - 为什么 "unused attribute"为结构数组生成警告?

rust - 解码存储在数据库中的数据

rust - 如何模式匹配包含 &mut 枚举的元组并在匹配臂中使用枚举?

matrix - 在 Racket 中设置多维向量的各个元素

c++ - 直接减去两个 vector<point2f>

c - 将结构数组传递给 C 中不同文件中的函数

C++ : Array of struct as function parameter

assembly - 如何将AVR GCC风格的C内联汇编转换为Rust内联汇编?