Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::collections::HashMap;
- struct Pc {
- maker: String,
- year: u16,
- }
- fn main() {
- let my_mac = Pc {
- maker: "apple".to_string(),
- year: 2018,
- };
- let my_old_mac = Pc {
- maker: "apple".to_string(),
- year: 2016,
- };
- let my_old_old_mac = Pc {
- maker: "apple".to_string(),
- year: 2010,
- };
- let my_win = Pc {
- maker: "dell".to_string(),
- year: 2018,
- };
- let my_old_win = Pc {
- maker: "dell".to_string(),
- year: 2016,
- };
- let my_old_old_win = Pc {
- maker: "dell".to_string(),
- year: 2010,
- };
- let a = [
- my_mac,
- my_old_mac,
- my_old_old_mac,
- my_win,
- my_old_win,
- my_old_old_win,
- ];
- let mut counter: HashMap<&str, u16> = HashMap::new();
- counter.insert("apple", 0);
- counter.insert("dell", 0);
- let top_k = 3;
- let dedupe_num = 2;
- let iter = a
- .iter()
- .filter(|x| {
- *counter.get_mut::<str>(&x.maker).unwrap() += 1;
- *counter.get::<str>(&x.maker).unwrap() <= dedupe_num
- }).take(top_k);
- for it in iter {
- println!("{},{}", it.maker, it.year);
- }
- }
Add Comment
Please, Sign In to add comment