Skip to content

Instantly share code, notes, and snippets.

@pschichtel
Created November 12, 2018 22:51
Show Gist options
  • Save pschichtel/b76a3b46083f2ca80ae6f04f2cbe200a to your computer and use it in GitHub Desktop.
Save pschichtel/b76a3b46083f2ca80ae6f04f2cbe200a to your computer and use it in GitHub Desktop.
extern crate multimap;
use std::hash::Hash;
use multimap::MultiMap;
fn main() {
let mut mmap = MultiMap::new();
mmap.insert(1, 'a');
mmap.insert(1, 'a');
mmap.insert(1, 'a');
mmap.insert(1, 'a');
let vec = vec!['a', 'b', 'c'];
let iter = vec.iter();
mmap.insert_many(2, iter);
println!("{:?}", vec);
println!("{:?}", mmap)
}
trait InsertMany<K, V> {
fn insert_many<I: Iterator<Item=V>>(&mut self, k: K, i: I);
}
impl<K, V> InsertMany<K, V> for MultiMap<K, V> where K: Eq + Hash + Copy {
fn insert_many<I: Iterator<Item=V>>(&mut self, k: K, it: I) {
for value in it {
self.insert(k, value);
}
}
}
@pschichtel
Copy link
Author

pschichtel commented Nov 12, 2018

error[E0271]: type mismatch resolving `<std::slice::Iter<'_, char> as std::iter::Iterator>::Item == char`
  --> src\main.rs:16:10
   |
16 |     mmap.insert_many(2, iter);
   |          ^^^^^^^^^^^ expected reference, found char
   |
   = note: expected type `&char`
              found type `char`

error: aborting due to previous error

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment