如何从 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 中的结构数组中获取字段值数组?的主要内容,如果未能解决你的问题,请参考以下文章
sql 从MySQL中JSON编码字段中的另一个数组中的数组中获取所有值。