29 lines
632 B
Rust
29 lines
632 B
Rust
/// Collection where an item can be inserted at a given index.
|
|
pub trait InsertIndex: cc_traits::Collection {
|
|
type Output;
|
|
|
|
fn insert_index(
|
|
&mut self,
|
|
index: usize,
|
|
element: <Self as cc_traits::Collection>::Item,
|
|
) -> Self::Output;
|
|
}
|
|
|
|
#[cfg(feature = "std")]
|
|
impl<T> InsertIndex for Vec<T> {
|
|
type Output = ();
|
|
|
|
fn insert_index(&mut self, index: usize, element: T) {
|
|
self.insert(index, element)
|
|
}
|
|
}
|
|
|
|
#[cfg(feature = "smallvec")]
|
|
impl<T, A: smallvec::Array<Item = T>> InsertIndex for smallvec::SmallVec<A> {
|
|
type Output = ();
|
|
|
|
fn insert_index(&mut self, index: usize, element: T) {
|
|
self.insert(index, element)
|
|
}
|
|
}
|