Struct indexmap::map::Slice

source ·
pub struct Slice<K, V> { /* private fields */ }
Expand description

A dynamically-sized slice of key-value pairs in an IndexMap.

This supports indexed operations much like a [(K, V)] slice, but not any hashed operations on the map keys.

Unlike IndexMap, Slice does consider the order for PartialEq and Eq, and it also implements PartialOrd, Ord, and Hash.

Implementations§

source§

impl<K, V> Slice<K, V>

source

pub const fn new<'a>() -> &'a Self

Returns an empty slice.

source

pub fn new_mut<'a>() -> &'a mut Self

Returns an empty mutable slice.

source

pub const fn len(&self) -> usize

Return the number of key-value pairs in the map slice.

source

pub const fn is_empty(&self) -> bool

Returns true if the map slice contains no elements.

source

pub fn get_index(&self, index: usize) -> Option<(&K, &V)>

Get a key-value pair by index.

Valid indices are 0 <= index < self.len()

source

pub fn get_index_mut(&mut self, index: usize) -> Option<(&K, &mut V)>

Get a key-value pair by index, with mutable access to the value.

Valid indices are 0 <= index < self.len()

source

pub fn get_range<R: RangeBounds<usize>>(&self, range: R) -> Option<&Self>

Returns a slice of key-value pairs in the given range of indices.

Valid indices are 0 <= index < self.len()

source

pub fn get_range_mut<R: RangeBounds<usize>>( &mut self, range: R ) -> Option<&mut Self>

Returns a mutable slice of key-value pairs in the given range of indices.

Valid indices are 0 <= index < self.len()

source

pub fn first(&self) -> Option<(&K, &V)>

Get the first key-value pair.

source

pub fn first_mut(&mut self) -> Option<(&K, &mut V)>

Get the first key-value pair, with mutable access to the value.

source

pub fn last(&self) -> Option<(&K, &V)>

Get the last key-value pair.

source

pub fn last_mut(&mut self) -> Option<(&K, &mut V)>

Get the last key-value pair, with mutable access to the value.

source

pub fn split_at(&self, index: usize) -> (&Self, &Self)

Divides one slice into two at an index.

Panics if index > len.

source

pub fn split_at_mut(&mut self, index: usize) -> (&mut Self, &mut Self)

Divides one mutable slice into two at an index.

Panics if index > len.

source

pub fn split_first(&self) -> Option<((&K, &V), &Self)>

Returns the first key-value pair and the rest of the slice, or None if it is empty.

source

pub fn split_first_mut(&mut self) -> Option<((&K, &mut V), &mut Self)>

Returns the first key-value pair and the rest of the slice, with mutable access to the value, or None if it is empty.

source

pub fn split_last(&self) -> Option<((&K, &V), &Self)>

Returns the last key-value pair and the rest of the slice, or None if it is empty.

source

pub fn split_last_mut(&mut self) -> Option<((&K, &mut V), &mut Self)>

Returns the last key-value pair and the rest of the slice, with mutable access to the value, or None if it is empty.

source

pub fn iter(&self) -> Iter<'_, K, V>

Return an iterator over the key-value pairs of the map slice.

source

pub fn iter_mut(&mut self) -> IterMut<'_, K, V>

Return an iterator over the key-value pairs of the map slice.

source

pub fn keys(&self) -> Keys<'_, K, V>

Return an iterator over the keys of the map slice.

source

pub fn into_keys(self: Box<Self>) -> IntoKeys<K, V>

Return an owning iterator over the keys of the map slice.

source

pub fn values(&self) -> Values<'_, K, V>

Return an iterator over the values of the map slice.

source

pub fn values_mut(&mut self) -> ValuesMut<'_, K, V>

Return an iterator over mutable references to the the values of the map slice.

source

pub fn into_values(self: Box<Self>) -> IntoValues<K, V>

Return an owning iterator over the values of the map slice.

source

pub fn binary_search_keys(&self, x: &K) -> Result<usize, usize>
where K: Ord,

Search over a sorted map for a key.

Returns the position where that key is present, or the position where it can be inserted to maintain the sort. See slice::binary_search for more details.

Computes in O(log(n)) time, which is notably less scalable than looking the key up in the map this is a slice from using IndexMap::get_index_of, but this can also position missing keys.

source

pub fn binary_search_by<'a, F>(&'a self, f: F) -> Result<usize, usize>
where F: FnMut(&'a K, &'a V) -> Ordering,

Search over a sorted map with a comparator function.

Returns the position where that value is present, or the position where it can be inserted to maintain the sort. See slice::binary_search_by for more details.

Computes in O(log(n)) time.

source

pub fn binary_search_by_key<'a, B, F>( &'a self, b: &B, f: F ) -> Result<usize, usize>
where F: FnMut(&'a K, &'a V) -> B, B: Ord,

Search over a sorted map with an extraction function.

Returns the position where that value is present, or the position where it can be inserted to maintain the sort. See slice::binary_search_by_key for more details.

Computes in O(log(n)) time.

source

pub fn partition_point<P>(&self, pred: P) -> usize
where P: FnMut(&K, &V) -> bool,

Returns the index of the partition point of a sorted map according to the given predicate (the index of the first element of the second partition).

See slice::partition_point for more details.

Computes in O(log(n)) time.

source§

impl<K, V> Slice<K, V>
where K: Sync, V: Sync,

Parallel iterator methods and other parallel methods.

The following methods require crate feature "rayon".

See also the IntoParallelIterator implementations.

source

pub fn par_keys(&self) -> ParKeys<'_, K, V>

Available on crate feature rayon only.

Return a parallel iterator over the keys of the map slice.

While parallel iterators can process items in any order, their relative order in the slice is still preserved for operations like reduce and collect.

source

pub fn par_values(&self) -> ParValues<'_, K, V>

Available on crate feature rayon only.

Return a parallel iterator over the values of the map slice.

While parallel iterators can process items in any order, their relative order in the slice is still preserved for operations like reduce and collect.

source§

impl<K, V> Slice<K, V>
where K: Send, V: Send,

source

pub fn par_values_mut(&mut self) -> ParValuesMut<'_, K, V>

Available on crate feature rayon only.

Return a parallel iterator over mutable references to the the values of the map slice.

While parallel iterators can process items in any order, their relative order in the slice is still preserved for operations like reduce and collect.

Trait Implementations§

source§

impl<K: Clone, V: Clone> Clone for Box<Slice<K, V>>

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<K: Debug, V: Debug> Debug for Slice<K, V>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<K, V> Default for &Slice<K, V>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<K, V> Default for &mut Slice<K, V>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<K, V> Default for Box<Slice<K, V>>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<K: Copy, V: Copy> From<&Slice<K, V>> for Box<Slice<K, V>>

source§

fn from(slice: &Slice<K, V>) -> Self

Converts to this type from the input type.
source§

impl<K: Hash, V: Hash> Hash for Slice<K, V>

source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
source§

impl<K, V> Index<(Bound<usize>, Bound<usize>)> for Slice<K, V>

§

type Output = Slice<K, V>

The returned type after indexing.
source§

fn index(&self, range: (Bound<usize>, Bound<usize>)) -> &Self

Performs the indexing (container[index]) operation. Read more
source§

impl<K, V> Index<Range<usize>> for Slice<K, V>

§

type Output = Slice<K, V>

The returned type after indexing.
source§

fn index(&self, range: Range<usize>) -> &Self

Performs the indexing (container[index]) operation. Read more
source§

impl<K, V> Index<RangeFrom<usize>> for Slice<K, V>

§

type Output = Slice<K, V>

The returned type after indexing.
source§

fn index(&self, range: RangeFrom<usize>) -> &Self

Performs the indexing (container[index]) operation. Read more
source§

impl<K, V> Index<RangeFull> for Slice<K, V>

§

type Output = Slice<K, V>

The returned type after indexing.
source§

fn index(&self, range: RangeFull) -> &Self

Performs the indexing (container[index]) operation. Read more
source§

impl<K, V> Index<RangeInclusive<usize>> for Slice<K, V>

§

type Output = Slice<K, V>

The returned type after indexing.
source§

fn index(&self, range: RangeInclusive<usize>) -> &Self

Performs the indexing (container[index]) operation. Read more
source§

impl<K, V> Index<RangeTo<usize>> for Slice<K, V>

§

type Output = Slice<K, V>

The returned type after indexing.
source§

fn index(&self, range: RangeTo<usize>) -> &Self

Performs the indexing (container[index]) operation. Read more
source§

impl<K, V> Index<RangeToInclusive<usize>> for Slice<K, V>

§

type Output = Slice<K, V>

The returned type after indexing.
source§

fn index(&self, range: RangeToInclusive<usize>) -> &Self

Performs the indexing (container[index]) operation. Read more
source§

impl<K, V> Index<usize> for Slice<K, V>

§

type Output = V

The returned type after indexing.
source§

fn index(&self, index: usize) -> &V

Performs the indexing (container[index]) operation. Read more
source§

impl<K, V> IndexMut<(Bound<usize>, Bound<usize>)> for Slice<K, V>

source§

fn index_mut(&mut self, range: (Bound<usize>, Bound<usize>)) -> &mut Self

Performs the mutable indexing (container[index]) operation. Read more
source§

impl<K, V> IndexMut<Range<usize>> for Slice<K, V>

source§

fn index_mut(&mut self, range: Range<usize>) -> &mut Self

Performs the mutable indexing (container[index]) operation. Read more
source§

impl<K, V> IndexMut<RangeFrom<usize>> for Slice<K, V>

source§

fn index_mut(&mut self, range: RangeFrom<usize>) -> &mut Self

Performs the mutable indexing (container[index]) operation. Read more
source§

impl<K, V> IndexMut<RangeFull> for Slice<K, V>

source§

fn index_mut(&mut self, range: RangeFull) -> &mut Self

Performs the mutable indexing (container[index]) operation. Read more
source§

impl<K, V> IndexMut<RangeInclusive<usize>> for Slice<K, V>

source§

fn index_mut(&mut self, range: RangeInclusive<usize>) -> &mut Self

Performs the mutable indexing (container[index]) operation. Read more
source§

impl<K, V> IndexMut<RangeTo<usize>> for Slice<K, V>

source§

fn index_mut(&mut self, range: RangeTo<usize>) -> &mut Self

Performs the mutable indexing (container[index]) operation. Read more
source§

impl<K, V> IndexMut<RangeToInclusive<usize>> for Slice<K, V>

source§

fn index_mut(&mut self, range: RangeToInclusive<usize>) -> &mut Self

Performs the mutable indexing (container[index]) operation. Read more
source§

impl<K, V> IndexMut<usize> for Slice<K, V>

source§

fn index_mut(&mut self, index: usize) -> &mut V

Performs the mutable indexing (container[index]) operation. Read more
source§

impl<'a, K, V> IntoIterator for &'a Slice<K, V>

§

type IntoIter = Iter<'a, K, V>

Which kind of iterator are we turning this into?
§

type Item = (&'a K, &'a V)

The type of the elements being iterated over.
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl<'a, K, V> IntoIterator for &'a mut Slice<K, V>

§

type IntoIter = IterMut<'a, K, V>

Which kind of iterator are we turning this into?
§

type Item = (&'a K, &'a mut V)

The type of the elements being iterated over.
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl<K, V> IntoIterator for Box<Slice<K, V>>

§

type IntoIter = IntoIter<K, V>

Which kind of iterator are we turning this into?
§

type Item = (K, V)

The type of the elements being iterated over.
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl<'a, K, V> IntoParallelIterator for &'a Slice<K, V>
where K: Sync, V: Sync,

Available on crate feature rayon only.
§

type Item = (&'a K, &'a V)

The type of item that the parallel iterator will produce.
§

type Iter = ParIter<'a, K, V>

The parallel iterator type that will be created.
source§

fn into_par_iter(self) -> Self::Iter

Converts self into a parallel iterator. Read more
source§

impl<'a, K, V> IntoParallelIterator for &'a mut Slice<K, V>
where K: Sync + Send, V: Send,

Available on crate feature rayon only.
§

type Item = (&'a K, &'a mut V)

The type of item that the parallel iterator will produce.
§

type Iter = ParIterMut<'a, K, V>

The parallel iterator type that will be created.
source§

fn into_par_iter(self) -> Self::Iter

Converts self into a parallel iterator. Read more
source§

impl<K, V> IntoParallelIterator for Box<Slice<K, V>>
where K: Send, V: Send,

Available on crate feature rayon only.
§

type Item = (K, V)

The type of item that the parallel iterator will produce.
§

type Iter = IntoParIter<K, V>

The parallel iterator type that will be created.
source§

fn into_par_iter(self) -> Self::Iter

Converts self into a parallel iterator. Read more
source§

impl<K: Ord, V: Ord> Ord for Slice<K, V>

source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
source§

impl<K: PartialEq, V: PartialEq> PartialEq for Slice<K, V>

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<K: PartialOrd, V: PartialOrd> PartialOrd for Slice<K, V>

source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl<K, V> Serialize for Slice<K, V>
where K: Serialize, V: Serialize,

Available on crate feature serde only.

Serializes a map::Slice as an ordered sequence.

This behaves like crate::map::serde_seq for IndexMap, serializing a sequence of (key, value) pairs, rather than as a map that might not preserve order.

source§

fn serialize<T>(&self, serializer: T) -> Result<T::Ok, T::Error>
where T: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<K: Eq, V: Eq> Eq for Slice<K, V>

Auto Trait Implementations§

§

impl<K, V> Freeze for Slice<K, V>
where K: Freeze, V: Freeze,

§

impl<K, V> RefUnwindSafe for Slice<K, V>

§

impl<K, V> Send for Slice<K, V>
where K: Send, V: Send,

§

impl<K, V> !Sized for Slice<K, V>

§

impl<K, V> Sync for Slice<K, V>
where K: Sync, V: Sync,

§

impl<K, V> Unpin for Slice<K, V>
where K: Unpin, V: Unpin,

§

impl<K, V> UnwindSafe for Slice<K, V>
where K: UnwindSafe, V: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<'data, I> IntoParallelRefIterator<'data> for I
where I: 'data + ?Sized, &'data I: IntoParallelIterator,

§

type Iter = <&'data I as IntoParallelIterator>::Iter

The type of the parallel iterator that will be returned.
§

type Item = <&'data I as IntoParallelIterator>::Item

The type of item that the parallel iterator will produce. This will typically be an &'data T reference type.
source§

fn par_iter(&'data self) -> <I as IntoParallelRefIterator<'data>>::Iter

Converts self into a parallel iterator. Read more
source§

impl<'data, I> IntoParallelRefMutIterator<'data> for I

§

type Iter = <&'data mut I as IntoParallelIterator>::Iter

The type of iterator that will be created.
§

type Item = <&'data mut I as IntoParallelIterator>::Item

The type of item that will be produced; this is typically an &'data mut T reference.
source§

fn par_iter_mut( &'data mut self ) -> <I as IntoParallelRefMutIterator<'data>>::Iter

Creates the parallel iterator from self. Read more