Construction:
new(capacity: usize)✓Default::default()✓
Access:
get(&self, key: &K)✓get_mut(&mut self, key: &K)✓contains_key(&self, key: &K)✓get_or_default(&self, key: &K, default: &V)✓ (custom)get_item(&self, key: &K)✓ (custom error handling)
Modification:
insert(&mut self, key: K, value: V)✓remove(&mut self, key: &K)✓clear(&mut self)✓
Size & State:
len(&self)✓is_empty(&self)✓is_leaf_root(&self)✓ (custom)leaf_count(&self)✓ (custom)
Iteration:
keys(&self)✓values(&self)✓items(&self)✓ (equivalent toiter())items_fast(&self)✓ (custom optimized)range<R>(&self, range: R)✓items_range(&self, start: &K, end: &K)✓ (custom)
Range Access:
first(&self)✓last(&self)✓
Custom Extensions:
try_get(&self, key: &K)✓ (error handling)try_insert(&mut self, key: K, value: V)✓ (error handling)try_remove(&mut self, key: &K)✓ (error handling)batch_insert(&mut self, items: Vec<(K, V)>)✓ (bulk operations)get_many(&self, keys: &[K])✓ (bulk operations)validate_for_operation(&self, operation: &str)✓ (debugging)
-
entry(&mut self, key: K) -> Entry<K, V>- Essential for efficient insert-or-update patterns
- Returns
Entryenum withOccupiedandVacantvariants - Status: MISSING
-
append(&mut self, other: &mut BTreeMap<K, V>)- Moves all elements from another map
- Status: MISSING
-
split_off(&mut self, key: &K) -> BTreeMap<K, V>- Splits map at key, returns new map with keys >= split key
- Status: MISSING
-
pop_first(&mut self) -> Option<(K, V)>- Removes and returns first key-value pair
- Status: MISSING
-
pop_last(&mut self) -> Option<(K, V)>- Removes and returns last key-value pair
- Status: MISSING
-
retain<F>(&mut self, f: F)whereF: FnMut(&K, &mut V) -> bool- Retains only elements for which predicate returns true
- Status: MISSING
-
values_mut(&mut self) -> ValuesMut<K, V>- Mutable iterator over values
- Status: MISSING
-
iter_mut(&mut self) -> IterMut<K, V>- Mutable iterator over key-value pairs
- Status: MISSING
-
range_mut<R>(&mut self, range: R) -> RangeMut<K, V>- Mutable range iterator
- Status: MISSING
-
into_keys(self) -> IntoKeys<K, V>- Consuming iterator over keys
- Status: MISSING
-
into_values(self) -> IntoValues<K, V>- Consuming iterator over values
- Status: MISSING
-
into_iter(self) -> IntoIter<K, V>- Consuming iterator over key-value pairs
- Status: MISSING
-
first_key_value(&self) -> Option<(&K, &V)>- We have
first()which is equivalent - Status: EQUIVALENT EXISTS
- We have
-
last_key_value(&self) -> Option<(&K, &V)>- We have
last()which is equivalent - Status: EQUIVALENT EXISTS
- We have
-
first_entry(&mut self) -> Option<OccupiedEntry<K, V>>- Requires Entry API implementation
- Status: MISSING (depends on Entry)
-
last_entry(&mut self) -> Option<OccupiedEntry<K, V>>- Requires Entry API implementation
- Status: MISSING (depends on Entry)
- Entry API (
entry(),Entryenum,OccupiedEntry,VacantEntry) append()- Map merging functionalitysplit_off()- Map splitting functionality
pop_first()andpop_last()retain()- In-place filtering- Mutable iterators (
values_mut(),iter_mut(),range_mut())
into_keys(),into_values(),into_iter()
Current Compatibility: ~75% of standard BTreeMap API
- ✅ All basic operations (get, insert, remove, clear)
- ✅ All read-only iteration
- ✅ Range queries
- ✅ Size and state queries
- ❌ Entry API (major gap)
- ❌ Map manipulation (append, split_off)
- ❌ Mutable iteration
- ❌ Consuming iteration
Target: 95%+ compatibility with standard BTreeMap API