pub trait AbstractVecMap<K, V> {
// Required method
fn as_slice(&self) -> &[(K, V)];
// Provided methods
fn is_empty(&self) -> bool { ... }
fn iter(&self) -> VecMapIter<Iter<'_, (K, V)>> { ... }
fn get<Q>(&self, key: &Q) -> Option<&V>
where K: Borrow<Q> + 'static,
Q: Ord + ?Sized { ... }
fn outer_join<W, R, F, A>(
&self,
that: &impl AbstractVecMap<K, W>,
f: F,
) -> VecMap<A>
where K: Ord + Clone,
A: Array<Item = (K, R)>,
F: Fn(OuterJoinArg<&K, &V, &W>) -> Option<R> { ... }
fn left_join<W, R, F, A>(
&self,
that: &impl AbstractVecMap<K, W>,
f: F,
) -> VecMap<A>
where K: Ord + Clone,
F: Fn(&K, &V, Option<&W>) -> Option<R>,
A: Array<Item = (K, R)> { ... }
fn right_join<W, R, F, A>(
&self,
that: &impl AbstractVecMap<K, W>,
f: F,
) -> VecMap<A>
where K: Ord + Clone,
F: Fn(&K, Option<&V>, &W) -> Option<R>,
A: Array<Item = (K, R)> { ... }
fn inner_join<W, R, F, A>(
&self,
that: &impl AbstractVecMap<K, W>,
f: F,
) -> VecMap<A>
where K: Ord + Clone,
F: Fn(&K, &V, &W) -> Option<R>,
A: Array<Item = (K, R)> { ... }
}Expand description
An abstract vec map
this is implemented by VecMap and ArchivedVecMap, so they are interoperable.
Required Methods§
Provided Methods§
fn is_empty(&self) -> bool
fn iter(&self) -> VecMapIter<Iter<'_, (K, V)>>
Sourcefn get<Q>(&self, key: &Q) -> Option<&V>
fn get<Q>(&self, key: &Q) -> Option<&V>
lookup of a mapping. Time complexity is O(log N). Binary search.
Sourcefn outer_join<W, R, F, A>(
&self,
that: &impl AbstractVecMap<K, W>,
f: F,
) -> VecMap<A>
fn outer_join<W, R, F, A>( &self, that: &impl AbstractVecMap<K, W>, f: F, ) -> VecMap<A>
Perform an outer join with another VecMap, producing a new result
fn left_join<W, R, F, A>( &self, that: &impl AbstractVecMap<K, W>, f: F, ) -> VecMap<A>
fn right_join<W, R, F, A>( &self, that: &impl AbstractVecMap<K, W>, f: F, ) -> VecMap<A>
fn inner_join<W, R, F, A>( &self, that: &impl AbstractVecMap<K, W>, f: F, ) -> VecMap<A>
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.