pub struct Slice2<'a, T>(/* private fields */);Expand description
An immutable rectangular view to a region of a Buf2, another Slice2,
or in general any &[T] slice of memory. A two-dimensional analog to &[T].
A Slice2 may be discontiguous:
+------stride-----+
| ____w____ |
| |r0_______| |
| |r1_______| h |
| |r2_______| |
+-----------------+TODO More documentation
Implementations§
Source§impl<'a, T> Slice2<'a, T>
impl<'a, T> Slice2<'a, T>
Sourcepub fn new(dims: Dims, stride: u32, data: &'a [T]) -> Self
pub fn new(dims: Dims, stride: u32, data: &'a [T]) -> Self
Returns a new Slice2 view to data with the given dimensions
and stride.
§Examples
let data = &[0, 1, 2, 3, 4, 5, 6];
let slice = Slice2::new((2, 2), 3, data);
assert_eq!(&slice[0usize], &[0, 1]);
assert_eq!(&slice[1usize], &[3, 4]);Above, slice represents a 2×2 rectangle with stride 3, such that
the first row maps to data[0..2] and the second to data[3..5]:
slice[0] slice[1]
| |
,---´---. ,---´---.
+---+---+---+---+---+---+---+
| 0 | 1 | 2 | 3 | 4 | 5 | 6 |
+---+---+---+---+---+---+---+Internally, this is implemented as the borrow &data[0..5].
Semantically, however, slice does not contain data[2] as
an element, and attempting to access it eg. with slice[0][2]
will panic, as expected.
§Panics
if stride < width or if the slice would overflow data.
Trait Implementations§
impl<'a, T: Copy> Copy for Slice2<'a, T>
Auto Trait Implementations§
impl<'a, T> Freeze for Slice2<'a, T>
impl<'a, T> RefUnwindSafe for Slice2<'a, T>where
T: RefUnwindSafe,
impl<'a, T> Send for Slice2<'a, T>
impl<'a, T> Sync for Slice2<'a, T>where
T: Sync,
impl<'a, T> Unpin for Slice2<'a, T>where
T: Unpin,
impl<'a, T> UnwindSafe for Slice2<'a, T>where
T: UnwindSafe + RefUnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more