【问题标题】:How to get Array of Field Values from Array of Structs in Rust?如何从 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"]
}

【问题讨论】:

    标签: vector struct rust iterator map-function


    【解决方案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

    【讨论】:

    • 第三种选择可能是在进程中使用人员列表并返回拥有的字符串而不需要克隆。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多