Struct stride::Stride

source ·
#[repr(transparent)]
pub struct Stride<T, const S: usize> { /* private fields */ }
Expand description

A constant strided slice.

Implementations

Constructs a new strided slice.

Examples
let data = &[1, 2, 3, 4, 5, 6];
let stride = Stride::<_, 3>::new(data);

Constructs a new mutable strided slice.

Examples
let data = &mut [1, 2, 3, 4, 5, 6];
let stride = Stride::<_, 3>::new_mut(data);

Returns the number of elements in the strided slice.

This is equivalent to the ceiling division of the underlying slice length by S.

Examples
let data = &[1, 2, 3, 4, 5, 6];
assert_eq!(Stride::<_, 1>::new(data).len(), 6);
assert_eq!(Stride::<_, 2>::new(data).len(), 3);
assert_eq!(Stride::<_, 3>::new(data).len(), 2);

Returns true if the strided slice has a length of 0.

Examples
let stride = Stride::<_, 3>::new(&[1, 2, 3, 4, 5, 6]);
assert!(!stride.is_empty());

Returns a raw pointer to the underlying slice’s buffer.

See slice::as_ptr().

Returns an unsafe mutable pointer to the underlying slice’s buffer.

See slice::as_mut_ptr().

Returns a reference to an element or substride depending on the type of index.

  • If given a position, returns a reference to the element at that position or None if out of bounds.
  • If given a range, returns the substride corresponding to that range, or None if out of bounds.
Examples
let stride = Stride::<_, 2>::new(&[1, 2, 3, 4, 5, 6]);
assert_eq!(stride.get(1), Some(&3));
assert_eq!(stride.get(0..2), Some(Stride::<_, 2>::new(&[1, 2, 3, 4])));
assert_eq!(stride.get(3), None);
assert_eq!(stride.get(0..4), None);

Returns a mutable reference to an element or substride depending on the type of index (see get) or None if the index is out of bounds.

Examples
let data = &mut [0, 1, 2, 3];
let stride = Stride::<_, 2>::new_mut(data);

if let Some(elem) = stride.get_mut(1) {
    *elem = 42;
}
assert_eq!(stride, Stride::<_, 2>::new(&[0, 1, 42, 3]));

Returns a reference to an element or substride, without doing bounds checking.

For a safe alternative see get.

Safety

Calling this method with an out-of-bounds index is undefined behavior even if the resulting reference is not used.

Returns a mutable reference to an element or substride, without doing bounds checking.

For a safe alternative see get_mut.

Safety

Calling this method with an out-of-bounds index is undefined behavior even if the resulting reference is not used.

Returns a reference to the first element of the strided slice, or None if it is empty.

Returns a mutable reference to the first element of the strided slice, or None if it is empty.

Returns a reference to the last element of the strided slice, or None if it is empty.

Returns a mutable reference to the last element of the strided slice, or None if it is empty.

Swaps two elements in the strided slice.

Arguments
  • a - The index of the first element
  • b - The index of the second element
Panics

If a or b are out of bounds.

Returns an iterator over the stride.

Examples
let stride = Stride::<_, 2>::new(&[1, 2, 3, 4, 5, 6]);
let mut iterator = stride.iter();
assert_eq!(iterator.next(), Some(&1));
assert_eq!(iterator.next(), Some(&3));
assert_eq!(iterator.next(), Some(&5));
assert_eq!(iterator.next(), None);

Returns an iterator over the stride that allows modifying each value.

Examples
let slice = &mut [1, 1, 2, 2, 3, 3];
let stride = Stride::<_, 2>::new_mut(slice);
for elem in stride.iter_mut() {
    *elem *= 2;
}
assert_eq!(slice, &[2, 1, 4, 2, 6, 3]);

Returns a slice containing the entire strided slice.

Only available on strided slices with a stride of 1.

Examples
let slice = &[1, 2, 3];
let stride = Stride::<_, 1>::new(slice);
assert_eq!(stride.as_slice(), slice);

Returns a mutable slice containing the entire strided slice.

Only available on strided slices with a stride of 1.

Examples
let slice = &mut [1, 2, 7];
let stride = Stride::<_, 1>::new_mut(slice);
stride.as_mut_slice()[2] = 3;
assert_eq!(slice, &[1, 2, 3])

Trait Implementations

Formats the value using the given formatter. Read more
Returns the “default value” for a type. Read more
Returns the “default value” for a type. Read more
Feeds this value into the given Hasher. Read more
The returned type after indexing.
Performs the indexing (container[index]) operation. Read more
Performs the mutable indexing (container[index]) operation. Read more
The type of the elements being iterated over.
Which kind of iterator are we turning this into?
Creates an iterator from a value. Read more
The type of the elements being iterated over.
Which kind of iterator are we turning this into?
Creates an iterator from a value. Read more
This method returns an Ordering between self and other. Read more
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. Read more
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. Read more
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. Read more
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. Read more
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. Read more
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
This method tests greater than (for self and other) and is used by the > operator. Read more
This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
The output type returned by methods.
Returns a shared reference to the output at this location, if in bounds. Read more
Returns a mutable reference to the output at this location, if in bounds. Read more
Returns a shared reference to the output at this location, without performing any bounds checking. Read more
Returns a mutable reference to the output at this location, without performing any bounds checking. Read more
Returns a shared reference to the output at this location, panicking if out of bounds. Read more
Returns a mutable reference to the output at this location, panicking if out of bounds. Read more
The output type returned by methods.
Returns a shared reference to the output at this location, if in bounds. Read more
Returns a mutable reference to the output at this location, if in bounds. Read more
Returns a shared reference to the output at this location, without performing any bounds checking. Read more
Returns a mutable reference to the output at this location, without performing any bounds checking. Read more
Returns a shared reference to the output at this location, panicking if out of bounds. Read more
Returns a mutable reference to the output at this location, panicking if out of bounds. Read more
The output type returned by methods.
Returns a shared reference to the output at this location, if in bounds. Read more
Returns a mutable reference to the output at this location, if in bounds. Read more
Returns a shared reference to the output at this location, without performing any bounds checking. Read more
Returns a mutable reference to the output at this location, without performing any bounds checking. Read more
Returns a shared reference to the output at this location, panicking if out of bounds. Read more
Returns a mutable reference to the output at this location, panicking if out of bounds. Read more
The output type returned by methods.
Returns a shared reference to the output at this location, if in bounds. Read more
Returns a mutable reference to the output at this location, if in bounds. Read more
Returns a shared reference to the output at this location, without performing any bounds checking. Read more
Returns a mutable reference to the output at this location, without performing any bounds checking. Read more
Returns a shared reference to the output at this location, panicking if out of bounds. Read more
Returns a mutable reference to the output at this location, panicking if out of bounds. Read more
The output type returned by methods.
Returns a shared reference to the output at this location, if in bounds. Read more
Returns a mutable reference to the output at this location, if in bounds. Read more
Returns a shared reference to the output at this location, without performing any bounds checking. Read more
Returns a mutable reference to the output at this location, without performing any bounds checking. Read more
Returns a shared reference to the output at this location, panicking if out of bounds. Read more
Returns a mutable reference to the output at this location, panicking if out of bounds. Read more
The output type returned by methods.
Returns a shared reference to the output at this location, if in bounds. Read more
Returns a mutable reference to the output at this location, if in bounds. Read more
Returns a shared reference to the output at this location, without performing any bounds checking. Read more
Returns a mutable reference to the output at this location, without performing any bounds checking. Read more
Returns a shared reference to the output at this location, panicking if out of bounds. Read more
Returns a mutable reference to the output at this location, panicking if out of bounds. Read more
The output type returned by methods.
Returns a shared reference to the output at this location, if in bounds. Read more
Returns a mutable reference to the output at this location, if in bounds. Read more
Returns a shared reference to the output at this location, without performing any bounds checking. Read more
Returns a mutable reference to the output at this location, without performing any bounds checking. Read more
Returns a shared reference to the output at this location, panicking if out of bounds. Read more
Returns a mutable reference to the output at this location, panicking if out of bounds. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more