Inner

Struct Inner 

Source
pub struct Inner<T, D> { /* private fields */ }
Expand description

A helper type that abstracts over owned and borrowed buffers.

The types Buf2, Slice2, and MutSlice2 deref to Inner.

Implementations§

Source§

impl<T, D> Inner<T, D>

Source

pub fn width(&self) -> u32

Returns the width of self.

Source

pub fn height(&self) -> u32

Returns the height of self.

Source

pub fn dims(&self) -> Dims

Returns the width and height of self.

Source

pub fn stride(&self) -> u32

Returns the stride of self.

Source

pub fn is_contiguous(&self) -> bool

Returns whether the rows of self are stored as one contiguous slice, without gaps between rows.

Buf2 instances are always contiguous. A Slice2 or MutSlice2 instance is contiguous if its width equals its stride, if its height is 1, or if it is empty.

Source

pub fn is_empty(&self) -> bool

Returns whether self contains no elements.

Source§

impl<T, D: Deref<Target = [T]>> Inner<T, D>

Source

pub fn as_slice2(&self) -> Slice2<'_, T>

Borrows self as a Slice2.

Source

pub fn slice(&self, rect: impl Into<Rect>) -> Slice2<'_, T>

Returns a borrowed rectangular slice of self.

§Panics

If any part of rect is outside the bounds of self.

Source

pub fn get(&self, pos: impl Into<Point2u>) -> Option<&T>

Returns a reference to the element at pos, or None if pos is out of bounds.

Source

pub fn rows(&self) -> impl Iterator<Item = &[T]>

Returns an iterator over the rows of self as &[T] slices.

The length of each slice equals self.width().

Source

pub fn iter(&self) -> impl Iterator<Item = &T>

Returns an iterator over the elements of self in row-major order.

First returns the elements on row 0 from left to right, followed by the elements on row 1, and so on.

Source§

impl<T, D: DerefMut<Target = [T]>> Inner<T, D>

Source

pub fn as_mut_slice2(&mut self) -> MutSlice2<'_, T>

Returns a mutably borrowed rectangular slice of self.

Source

pub fn rows_mut(&mut self) -> impl Iterator<Item = &mut [T]>

Returns an iterator over the rows of this buffer as &mut [T].

The length of each slice equals self.width().

Source

pub fn iter_mut(&mut self) -> impl Iterator<Item = &mut T>

Returns a mutable iterator over all the elements of self, yielded in row-major order.

Source

pub fn fill(&mut self, val: T)
where T: Clone,

Fills self with clones of the value.

Source

pub fn fill_with<F>(&mut self, fill_fn: F)
where F: FnMut(u32, u32) -> T,

Fills self by calling a function for each element.

Calls f(x, y) for every element, where x and y are the column and row indices of the element. Proceeds in row-major order.

Source

pub fn copy_from(&mut self, other: impl AsSlice2<T>)
where T: Copy,

Copies each element in other to the same position in self.

This operation is often called “blitting”.

§Panics

if the dimensions of self and other do not match.

Source

pub fn get_mut(&mut self, pos: impl Into<Point2u>) -> Option<&mut T>

Returns a mutable reference to the element at pos, or None if pos is out of bounds.

Source

pub fn slice_mut(&mut self, rect: impl Into<Rect>) -> MutSlice2<'_, T>

Returns a mutably borrowed rectangular slice of self.

§Panics

If any part of rect is outside the bounds of self.

Trait Implementations§

Source§

impl<T: Clone, D: Clone> Clone for Inner<T, D>

Source§

fn clone(&self) -> Inner<T, D>

Returns a duplicate 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<T, D, Pos> Index<Pos> for Inner<T, D>
where D: Deref<Target = [T]>, Pos: Into<Point2u>,

Source§

fn index(&self, pos: Pos) -> &T

Returns a reference to the element at position pos.

§Panics

If pos is out of bounds.

Source§

type Output = T

The returned type after indexing.
Source§

impl<T, D: Deref<Target = [T]>> Index<usize> for Inner<T, D>

Source§

fn index(&self, i: usize) -> &[T]

Returns a reference to the row at index i.

The returned slice has length self.width().

§Panics

If row >= self.height().

Source§

type Output = [T]

The returned type after indexing.
Source§

impl<T, D, Pos> IndexMut<Pos> for Inner<T, D>
where D: DerefMut<Target = [T]>, Pos: Into<Point2u>,

Source§

fn index_mut(&mut self, pos: Pos) -> &mut T

Returns a mutable reference to the element at position pos.

§Panics

If pos is out of bounds.

Source§

impl<T, D> IndexMut<usize> for Inner<T, D>
where Self: Index<usize, Output = [T]>, D: DerefMut<Target = [T]>,

Source§

fn index_mut(&mut self, row: usize) -> &mut [T]

Returns a mutable reference to the row at index i.

The returned slice has length self.width().

§Panics

If row >= self.height().

Source§

impl<T: PartialEq, D: PartialEq> PartialEq for Inner<T, D>

Source§

fn eq(&self, other: &Inner<T, D>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<T: Copy, D: Copy> Copy for Inner<T, D>

Source§

impl<T: Eq, D: Eq> Eq for Inner<T, D>

Source§

impl<T, D> StructuralPartialEq for Inner<T, D>

Auto Trait Implementations§

§

impl<T, D> Freeze for Inner<T, D>
where D: Freeze,

§

impl<T, D> RefUnwindSafe for Inner<T, D>

§

impl<T, D> Send for Inner<T, D>
where D: Send, T: Send,

§

impl<T, D> Sync for Inner<T, D>
where D: Sync, T: Sync,

§

impl<T, D> Unpin for Inner<T, D>
where D: Unpin, T: Unpin,

§

impl<T, D> UnwindSafe for Inner<T, D>
where D: UnwindSafe, T: 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<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.