retrofire_core::util::buf::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 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<Vec2u>) -> 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 all 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 an iterator over all the elements of self in row-major order: first the elements on row 0 from left to right, followed by the elements on row 1, and so on.

Source

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

Fills self with clones of val.

Source

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

Fills self by invoking f(x, y) for every element, where x and y are the column and row of the element, respectively.

Source

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

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

This operation is often called “blitting”.

§Panics

if the dimensions of self and src don’t match.

Source

pub fn get_mut(&mut self, pos: impl Into<Vec2u>) -> 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 copy 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<Vec2u>,

Source§

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

Returns a reference to the element of self at position pos.

§Panics

If pos is out of bounds of self.

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 of self at index i. The returned slice has length self.width().

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<Vec2u>,

Source§

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

Returns a mutable reference to the element of self at position pos.

§Panics

If pos is out of bounds of self.

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 of self at index i. The returned slice has length self.width().

Source§

impl<T: Copy, D: Copy> Copy 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, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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.