Struct strided::Stride
[−]
[src]
#[repr(C)]pub struct Stride<'a, T: 'a> { /* fields omitted */ }
A shared strided slice. This is equivalent to a &[T]
that only
refers to every n
th T
.
Methods
impl<'a, T> Stride<'a, T>
[src]
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 n
th 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 n
th 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()
.
Trait Implementations
impl<'a, T: PartialEq + 'a> PartialEq for Stride<'a, T>
[src]
fn eq(&self, __arg_0: &Stride<'a, T>) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
fn ne(&self, __arg_0: &Stride<'a, T>) -> bool
This method tests for !=
.
impl<'a, T: Eq + 'a> Eq for Stride<'a, T>
[src]
impl<'a, T: PartialOrd + 'a> PartialOrd for Stride<'a, T>
[src]
fn partial_cmp(&self, __arg_0: &Stride<'a, T>) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
fn lt(&self, __arg_0: &Stride<'a, T>) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
fn le(&self, __arg_0: &Stride<'a, T>) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
fn gt(&self, __arg_0: &Stride<'a, T>) -> bool
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
fn ge(&self, __arg_0: &Stride<'a, T>) -> bool
This method tests greater than or equal to (for self
and other
) and is used by the >=
operator. Read more
impl<'a, T: Ord + 'a> Ord for Stride<'a, T>
[src]
fn cmp(&self, __arg_0: &Stride<'a, T>) -> Ordering
This method returns an Ordering
between self
and other
. Read more
impl<'a, T> Copy for Stride<'a, T>
[src]
impl<'a, T> Clone for Stride<'a, T>
[src]
fn clone(&self) -> Stride<'a, T>
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0
Performs copy-assignment from source
. Read more
impl<'a, T: Sync> Sync for Stride<'a, T>
[src]
impl<'a, T: Sync> Send for Stride<'a, T>
[src]
impl<'a, T: Debug> Debug for Stride<'a, T>
[src]
impl<'a, T> Index<usize> for Stride<'a, T>
[src]
type Output = T
The returned type after indexing
fn index<'b>(&'b self, n: usize) -> &'b T
The method for the indexing (container[index]
) operation