Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use itertools::Itertools;
- #[derive(Debug, PartialEq)]
- struct User {
- id: i32,
- }
- #[derive(Debug)]
- struct Post {
- id: i32,
- uid: i32,
- title: &'static str,
- }
- fn main() {
- let query = vec![
- (User { id: 1 }, Post { id: 1, uid: 1, title: "a" }),
- (User { id: 1 }, Post { id: 2, uid: 1, title: "b" }),
- (User { id: 2 }, Post { id: 2, uid: 2, title: "a" }),
- ];
- let users = query.iter()
- .group_by(|(user, _post)| user)
- .into_iter()
- .map(|(user, group)| {
- (user, group.map(|(_user, post)| post).collect::<Vec<_>>())
- })
- .collect::<Vec<_>>();
- dbg!(users);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement