根据item.data每一项的a进行过滤,凡是a为Empty或Unsupported的就不显示这个Data,不知道该怎么写了,想用map和filter。
#[derive(Debug)]
enum Detail {
Empty,
Unsupported,
Message(String),
}
#[derive(Debug)]
struct Data {
a: Detail,
b: Detail,
}
#[derive(Debug)]
struct Item {
name: String,
data: Vec<Data>,
}
fn main() {
let lists = vec! [
Item {
name: String::from("abc"),
data: vec! [
Data {
a: Detail::Empty,
b: Detail::Empty,
},
Data {
a: Detail::Unsupported,
b: Detail::Empty,
},
Data {
a: Detail::Message(String::from("msg1")),
b: Detail::Message(String::from("msg2")),
}
],
},
Item {
name: String::from("def"),
data: vec! [
Data {
a: Detail::Empty,
b: Detail::Message(String::from("msg3")),
},
Data {
a: Detail::Message(String::from("msg4")),
b: Detail::Empty,
},
Data {
a: Detail::Empty,
b: Detail::Message(String::from("msg2")),
}
],
}
];
//比如上例,最终结果如:
// [
// Item {
// name: "abc",
// data: [
// Data {
// a: Message(
// "msg1",
// ),
// b: Message(
// "msg2",
// ),
// },
// ],
// },
// Item {
// name: "def",
// data: [
// Data {
// a: Message(
// "msg4",
// ),
// b: Empty,
// }
// ],
// },
// ]
println!("{:#?}",lists);
}
Ext Link: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=12fe86123e0709e25bc5d7d85b36cf10
1
共 6 条评论, 1 页
评论区
写评论非常感谢##puzc1993##大神耐心回答!借此再引申一个问题:在迭代末尾,通常是如何判断collect需要指定收集格式的呢?
--
👇
ziyouwa: 更进一步,如果是不破坏原有的lists,除了clone之外,有其他方式吗?
--
👇
--
👇
ziyouwa: 非常感谢!确实实现了我的目的。不过我有点疑问:第一个map中,传入的item本身就是Item结构的了,能否不新建Item来实现?
--
👇
puzc1993: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=fa5950110ea9a014192fdde855aabe4a
更进一步,如果是不破坏原有的lists,除了clone之外,有其他方式吗?
--
👇
--
👇
ziyouwa: 非常感谢!确实实现了我的目的。不过我有点疑问:第一个map中,传入的item本身就是Item结构的了,能否不新建Item来实现?
--
👇
puzc1993: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=fa5950110ea9a014192fdde855aabe4a
--
👇
ziyouwa: 非常感谢!确实实现了我的目的。不过我有点疑问:第一个map中,传入的item本身就是Item结构的了,能否不新建Item来实现?
--
👇
puzc1993: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=fa5950110ea9a014192fdde855aabe4a
非常感谢!确实实现了我的目的。不过我有点疑问:第一个map中,传入的item本身就是Item结构的了,能否不新建Item来实现?
--
👇
puzc1993: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=fa5950110ea9a014192fdde855aabe4a
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=fa5950110ea9a014192fdde855aabe4a