#![allow(unused_variables)] #![feature(btree_extract_if)] fn main() { use std::collections::BTreeMap; let mut map: BTreeMap = (0..8).map(|x| (x, x)).collect(); let evens: BTreeMap<_, _> = map.extract_if(.., |k, _v| k % 2 == 0).collect(); let odds = map; assert_eq!(evens.keys().copied().collect::< Vec < _ >> (), [0, 2, 4, 6]); assert_eq!(odds.keys().copied().collect::< Vec < _ >> (), [1, 3, 5, 7]); let mut map: BTreeMap = (0..8).map(|x| (x, x)).collect(); let low: BTreeMap<_, _> = map.extract_if(0..4, |_k, _v| true).collect(); let high = map; assert_eq!(low.keys().copied().collect::< Vec < _ >> (), [0, 1, 2, 3]); assert_eq!(high.keys().copied().collect::< Vec < _ >> (), [4, 5, 6, 7]); }