I'd like to efficiently, preferably in a functional way, truncate an existing BTreeMap from a reference and return a cloned, truncated BTreeMap of the same key-value pairs.
use std::collections::BTreeMap;
/// I want to return a BTreeMap containing only the first 2 keys.
fn truncate(b: &BTreeMap<u32, u32>) -> BTreeMap<u32, u32> {
b.iter().take(2).cloned().collect()
}
fn main() {
let mut b = BTreeMap::new();
b.insert(1, 1);
b.insert(2, 1);
b.insert(3, 1);
let t = truncate(&b);
}
The error message:
expected an iterator that yields
&_
, but it yields(&u32, &u32)