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

Posted

技术标签:

【中文标题】如何从 Rust 中的结构数组中获取字段值数组?【英文标题】:How to get Array of Field Values from Array of Structs in Rust? 【发布时间】:2021-04-03 05:18:50 【问题描述】:

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

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"]

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

第三种选择可能是在进程中使用人员列表并返回拥有的字符串而不需要克隆。

以上是关于如何从 Rust 中的结构数组中获取字段值数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何从节点js中的数组中获取文件名值

sql 从MySQL中JSON编码字段中的另一个数组中的数组中获取所有值。

如何使用 lodash 从复杂的对象数组中获取值?

如何在Rust中的结构中声明“静态”字段?

如何从 Angular2(Typescript)中的 Json 数组中获取值的总和

matlab中如何看函数结构体中的数据