TileSet32

Struct TileSet32 

Source
pub struct TileSet32<const WIDTH: u8, const HEIGHT: u8, const SIZE: usize>(/* private fields */);
Expand description

A grid A map from tiles to bools. Can store up to 256 tiles.

Implementations§

Source§

impl<const WIDTH: u8, const HEIGHT: u8, const SIZE: usize> TileSet32<WIDTH, HEIGHT, SIZE>

Source

pub const EMPTY: Self

The set where all tiles are missing

Source

pub const ALL: Self

The set where all tiles are present

Source

pub fn from_fn<F: FnMut(Tile<WIDTH, HEIGHT>) -> bool>(cb: F) -> Self

Source

pub const fn from_inner(inner: u32) -> Self

Source

pub const fn into_inner(self) -> u32

Source

pub const fn is_empty(self) -> bool

Source

pub const fn set_bit(&mut self, tile: &Tile<WIDTH, HEIGHT>, bit: bool)

Source

pub const fn insert(&mut self, tile: &Tile<WIDTH, HEIGHT>) -> bool

Source

pub const fn remove(&mut self, tile: &Tile<WIDTH, HEIGHT>) -> bool

Source

pub const fn with_bit_set(&self, tile: &Tile<WIDTH, HEIGHT>, bit: bool) -> Self

Returns a copy of self with the bit at tile set to bit

Source

pub const fn get_bit(&self, tile: &Tile<WIDTH, HEIGHT>) -> bool

Source

pub const fn iter( &self, ) -> impl DoubleEndedIterator<Item = bool> + ExactSizeIterator

Source

pub const fn row( &self, y: u8, ) -> impl DoubleEndedIterator<Item = bool> + ExactSizeIterator

Source

pub const fn col( &self, x: u8, ) -> impl DoubleEndedIterator<Item = bool> + ExactSizeIterator

Source

pub const fn shift_north(&self, rows: u8) -> Self

Source

pub const fn shift_south(&self, rows: u8) -> Self

Source

pub const fn shift_east(&self) -> Self

Source

pub const fn shift_west(&self) -> Self

Source

pub const fn row_mask(y: u8) -> Self

Source

pub const fn col_mask(x: u8) -> Self

Source

pub fn enumerate( &self, ) -> impl DoubleEndedIterator<Item = (Tile<WIDTH, HEIGHT>, bool)> + ExactSizeIterator

Source

pub const fn iter_true_tiles( &self, ) -> impl ExactSizeIterator<Item = Tile<WIDTH, HEIGHT>> + Clone + Debug + FusedIterator + DoubleEndedIterator

Source

pub const fn count(&self) -> u32

Source

pub const fn get_scale(total_width: f32, total_height: f32) -> f32

Get the scale to make the grid take up as much as possible of a given area

Source

pub const fn intersect(&self, rhs: &Self) -> Self

Source

pub const fn union(&self, rhs: &Self) -> Self

Source

pub const fn except(&self, rhs: &Self) -> Self

Source

pub const fn is_subset(&self, rhs: &Self) -> bool

Source

pub const fn is_superset(&self, rhs: &Self) -> bool

Source

pub const fn symmetric_difference(&self, rhs: &Self) -> Self

Returns a new set containing all elements which belong to one set but not both

Source

pub const fn negate(&self) -> Self

Source

pub const fn first(&self) -> Option<Tile<WIDTH, HEIGHT>>

The first tile in this set

Source

pub const fn pop(&mut self) -> Option<Tile<WIDTH, HEIGHT>>

Removes the first tile in this set and returns it Returns None if the set is empty

Source

pub const fn pop_last(&mut self) -> Option<Tile<WIDTH, HEIGHT>>

Removes the first tile in this set and returns it Returns None if the set is empty

Source

pub const fn last(&self) -> Option<Tile<WIDTH, HEIGHT>>

The last tile in this set

Source

pub const fn tiles_before(&self, tile: Tile<WIDTH, HEIGHT>) -> u32

Returns the number of tiles in the set which are less than this tile. Note that it returns the same result whether or not the given tile is in the set

Source

pub const fn nth(&self, n: u32) -> Option<Tile<WIDTH, HEIGHT>>

Returns the nth tile in the set, if it is present

Trait Implementations§

Source§

impl<const W: u8, const H: u8, const SIZE: usize> Binary for TileSet32<W, H, SIZE>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<const WIDTH: u8, const HEIGHT: u8, const SIZE: usize> Clone for TileSet32<WIDTH, HEIGHT, SIZE>

Source§

fn clone(&self) -> TileSet32<WIDTH, HEIGHT, SIZE>

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<const WIDTH: u8, const HEIGHT: u8, const SIZE: usize> Debug for TileSet32<WIDTH, HEIGHT, SIZE>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<const WIDTH: u8, const HEIGHT: u8, const SIZE: usize> Default for TileSet32<WIDTH, HEIGHT, SIZE>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de, const WIDTH: u8, const HEIGHT: u8, const SIZE: usize> Deserialize<'de> for TileSet32<WIDTH, HEIGHT, SIZE>

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl<const W: u8, const H: u8, const SIZE: usize> Display for TileSet32<W, H, SIZE>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<const WIDTH: u8, const HEIGHT: u8, const SIZE: usize> FromIterator<Tile<WIDTH, HEIGHT>> for TileSet32<WIDTH, HEIGHT, SIZE>

Source§

fn from_iter<T>(iter: T) -> Self
where T: IntoIterator<Item = Tile<WIDTH, HEIGHT>>,

Creates a value from an iterator. Read more
Source§

impl<const WIDTH: u8, const HEIGHT: u8, const SIZE: usize> Hash for TileSet32<WIDTH, HEIGHT, SIZE>

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<const WIDTH: u8, const HEIGHT: u8, const SIZE: usize> Ord for TileSet32<WIDTH, HEIGHT, SIZE>

Source§

fn cmp(&self, other: &TileSet32<WIDTH, HEIGHT, SIZE>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl<const WIDTH: u8, const HEIGHT: u8, const SIZE: usize> PartialEq for TileSet32<WIDTH, HEIGHT, SIZE>

Source§

fn eq(&self, other: &TileSet32<WIDTH, HEIGHT, SIZE>) -> 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<const WIDTH: u8, const HEIGHT: u8, const SIZE: usize> PartialOrd for TileSet32<WIDTH, HEIGHT, SIZE>

Source§

fn partial_cmp( &self, other: &TileSet32<WIDTH, HEIGHT, SIZE>, ) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<const WIDTH: u8, const HEIGHT: u8, const SIZE: usize> Serialize for TileSet32<WIDTH, HEIGHT, SIZE>

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl<const WIDTH: u8, const HEIGHT: u8, const SIZE: usize> Copy for TileSet32<WIDTH, HEIGHT, SIZE>

Source§

impl<const WIDTH: u8, const HEIGHT: u8, const SIZE: usize> Eq for TileSet32<WIDTH, HEIGHT, SIZE>

Source§

impl<const WIDTH: u8, const HEIGHT: u8, const SIZE: usize> StructuralPartialEq for TileSet32<WIDTH, HEIGHT, SIZE>

Auto Trait Implementations§

§

impl<const WIDTH: u8, const HEIGHT: u8, const SIZE: usize> Freeze for TileSet32<WIDTH, HEIGHT, SIZE>

§

impl<const WIDTH: u8, const HEIGHT: u8, const SIZE: usize> RefUnwindSafe for TileSet32<WIDTH, HEIGHT, SIZE>

§

impl<const WIDTH: u8, const HEIGHT: u8, const SIZE: usize> Send for TileSet32<WIDTH, HEIGHT, SIZE>

§

impl<const WIDTH: u8, const HEIGHT: u8, const SIZE: usize> Sync for TileSet32<WIDTH, HEIGHT, SIZE>

§

impl<const WIDTH: u8, const HEIGHT: u8, const SIZE: usize> Unpin for TileSet32<WIDTH, HEIGHT, SIZE>

§

impl<const WIDTH: u8, const HEIGHT: u8, const SIZE: usize> UnwindSafe for TileSet32<WIDTH, HEIGHT, SIZE>

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, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

Source§

const WITNESS: W = W::MAKE

A constant of the type witness
Source§

impl<T> Identity for T
where T: ?Sized,

Source§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
Source§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,