Struct strided::Stride
[-] [+]
[src]
pub struct Stride<'a, T: 'a> {
// some fields omitted
}A shared strided slice. This is equivalent to a &[T] that only
refers to every nth T.
Methods
impl<'a, T> Stride<'a, T>
fn new(x: &'a [T]) -> Stride<'a, T>
Creates a new strided slice directly from a conventional slice. The return value has stride 1.
fn len(&self) -> usize
Returns the number of elements accessible in self.
fn stride(&self) -> usize
Returns the offset between successive elements of self as a
count of elements, not bytes.
fn as_ptr(&self) -> *const T
Returns a pointer to the first element of this strided slice.
NB. one must be careful since only every self.stride()th
element is guaranteed to have unique access via this object;
the others may be under the control of some other strided
slice.
fn substrides2(&self) -> (Stride<'a, T>, Stride<'a, T>)
Breaks this strided slice into two strided slices pointing to alternate elements.
That is, it doubles the stride and (approximately) halves the
length. A slice pointing to values [1, 2, 3, 4, 5] becomes
two slices [1, 3, 5] and [2, 4]. This is guaranteed to
succeed even if self.len() is odd, and even if self
has only zero or one elements.
fn substrides(&self, n: usize) -> Substrides<'a, T>
Returns an iterator over n strided subslices of self each
pointing to every nth element, starting at successive
offsets.
Calling substrides(3) on a slice pointing to [1, 2, 3, 4, 5, 6, 7] will yield, in turn, [1, 4, 7], [2, 5] and finally
[3, 6]. Like with split2 this is guaranteed to succeed
(return n strided slices) even if self has fewer than n
elements and if self.len() is not a multiple of n.
fn get(&self, n: usize) -> Option<&'a T>
Returns a reference to the nth element of self, or None
if n is out-of-bounds.
fn iter(&self) -> Items<'a, T>
Returns an iterator over references to each successive element
of self.
Unlike MutStrides, this can return references with the
maximum lifetime without consuming self and so an
into_iter equivalent is unnecessary.
fn slice(&self, from: usize, to: usize) -> Stride<'a, T>
Returns a strided slice containing only the elements from
indices from (inclusive) to to (exclusive).
Panic
Panics if from > to or if to > self.len().
fn slice_from(&self, from: usize) -> Stride<'a, T>
Returns a strided slice containing only the elements from
index from (inclusive).
Panic
Panics if from > self.len().
fn slice_to(&self, to: usize) -> Stride<'a, T>
Returns a strided slice containing only the elements to
index to (exclusive).
Panic
Panics if to > self.len().
fn split_at(&self, idx: usize) -> (Stride<'a, T>, Stride<'a, T>)
Returns two strided slices, the first with elements up to
idx (exclusive) and the second with elements from idx.
This is semantically equivalent to (self.slice_to(idx), self.slice_from(idx)).
Panic
Panics if idx > self.len().