SlabItem

Trait SlabItem 

Source
pub trait SlabItem: Sized + Any {
    const SLAB_SIZE: usize;

    // Required methods
    fn read_slab(index: usize, slab: &[u32]) -> Self;
    fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize;
}
Expand description

Determines the “size” of a type when stored in a slab of &[u32], and how to read/write it from/to the slab.

SlabItem can be automatically derived for struct and tuple types, so long as those types’ fields implement SlabItem.

Required Associated Constants§

Source

const SLAB_SIZE: usize

The number of u32s this type occupies in a slab of &[u32].

Required Methods§

Source

fn read_slab(index: usize, slab: &[u32]) -> Self

Read the type out of the slab at index.

Source

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Write the type into the slab at starting index and return the new index.

If the type cannot be written, the returned index will be equal to index.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl SlabItem for bool

Source§

const SLAB_SIZE: usize = 1usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> bool

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl SlabItem for f32

Source§

const SLAB_SIZE: usize = 1usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> f32

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl SlabItem for f64

Source§

const SLAB_SIZE: usize = 2usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> f64

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl SlabItem for i8

Source§

const SLAB_SIZE: usize = 1usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> i8

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl SlabItem for i16

Source§

const SLAB_SIZE: usize = 1usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> i16

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl SlabItem for i32

Source§

const SLAB_SIZE: usize = 1usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> i32

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl SlabItem for i64

Source§

const SLAB_SIZE: usize = 2usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> i64

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl SlabItem for i128

Source§

const SLAB_SIZE: usize = 4usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> i128

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl SlabItem for u8

Source§

const SLAB_SIZE: usize = 1usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> u8

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl SlabItem for u16

Source§

const SLAB_SIZE: usize = 1usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> u16

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl SlabItem for u32

Source§

const SLAB_SIZE: usize = 1usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> u32

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl SlabItem for u64

Source§

const SLAB_SIZE: usize = 2usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> u64

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl SlabItem for u128

Source§

const SLAB_SIZE: usize = 4usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> u128

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl<A> SlabItem for (A,)
where A: SlabItem,

Source§

const SLAB_SIZE: usize = { A::SLAB_SIZE }

Source§

fn read_slab(index: usize, slab: &[u32]) -> (A,)

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl<A, B> SlabItem for (A, B)
where A: SlabItem, B: SlabItem,

Source§

const SLAB_SIZE: usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> (A, B)

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl<A, B, C> SlabItem for (A, B, C)
where A: SlabItem, B: SlabItem, C: SlabItem,

Source§

const SLAB_SIZE: usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> (A, B, C)

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl<A, B, C, D> SlabItem for (A, B, C, D)
where A: SlabItem, B: SlabItem, C: SlabItem, D: SlabItem,

Source§

const SLAB_SIZE: usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> (A, B, C, D)

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl<A, B, C, D, E> SlabItem for (A, B, C, D, E)
where A: SlabItem, B: SlabItem, C: SlabItem, D: SlabItem, E: SlabItem,

Source§

const SLAB_SIZE: usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> (A, B, C, D, E)

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl<A, B, C, D, E, F> SlabItem for (A, B, C, D, E, F)
where A: SlabItem, B: SlabItem, C: SlabItem, D: SlabItem, E: SlabItem, F: SlabItem,

Source§

const SLAB_SIZE: usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> (A, B, C, D, E, F)

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl<A, B, C, D, E, F, G> SlabItem for (A, B, C, D, E, F, G)
where A: SlabItem, B: SlabItem, C: SlabItem, D: SlabItem, E: SlabItem, F: SlabItem, G: SlabItem,

Source§

const SLAB_SIZE: usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> (A, B, C, D, E, F, G)

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl<A, B, C, D, E, F, G, H> SlabItem for (A, B, C, D, E, F, G, H)
where A: SlabItem, B: SlabItem, C: SlabItem, D: SlabItem, E: SlabItem, F: SlabItem, G: SlabItem, H: SlabItem,

Source§

const SLAB_SIZE: usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> (A, B, C, D, E, F, G, H)

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl<A, B, C, D, E, F, G, H, I> SlabItem for (A, B, C, D, E, F, G, H, I)
where A: SlabItem, B: SlabItem, C: SlabItem, D: SlabItem, E: SlabItem, F: SlabItem, G: SlabItem, H: SlabItem, I: SlabItem,

Source§

const SLAB_SIZE: usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> (A, B, C, D, E, F, G, H, I)

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl<A, B, C, D, E, F, G, H, I, J> SlabItem for (A, B, C, D, E, F, G, H, I, J)
where A: SlabItem, B: SlabItem, C: SlabItem, D: SlabItem, E: SlabItem, F: SlabItem, G: SlabItem, H: SlabItem, I: SlabItem, J: SlabItem,

Source§

const SLAB_SIZE: usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> (A, B, C, D, E, F, G, H, I, J)

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl<A, B, C, D, E, F, G, H, I, J, K> SlabItem for (A, B, C, D, E, F, G, H, I, J, K)
where A: SlabItem, B: SlabItem, C: SlabItem, D: SlabItem, E: SlabItem, F: SlabItem, G: SlabItem, H: SlabItem, I: SlabItem, J: SlabItem, K: SlabItem,

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L> SlabItem for (A, B, C, D, E, F, G, H, I, J, K, L)
where A: SlabItem, B: SlabItem, C: SlabItem, D: SlabItem, E: SlabItem, F: SlabItem, G: SlabItem, H: SlabItem, I: SlabItem, J: SlabItem, K: SlabItem, L: SlabItem,

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M> SlabItem for (A, B, C, D, E, F, G, H, I, J, K, L, M)
where A: SlabItem, B: SlabItem, C: SlabItem, D: SlabItem, E: SlabItem, F: SlabItem, G: SlabItem, H: SlabItem, I: SlabItem, J: SlabItem, K: SlabItem, L: SlabItem, M: SlabItem,

Source§

impl<T> SlabItem for Option<T>
where T: SlabItem + Default,

Source§

const SLAB_SIZE: usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> Option<T>

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Source§

impl<T> SlabItem for PhantomData<T>
where T: Any,

Source§

const SLAB_SIZE: usize = 0usize

Source§

fn read_slab(_: usize, _: &[u32]) -> PhantomData<T>

Source§

fn write_slab(&self, index: usize, _: &mut [u32]) -> usize

Source§

impl<T, const N: usize> SlabItem for [T; N]
where T: SlabItem + Copy + Default,

Source§

const SLAB_SIZE: usize

Source§

fn read_slab(index: usize, slab: &[u32]) -> [T; N]

Source§

fn write_slab(&self, index: usize, slab: &mut [u32]) -> usize

Implementors§

Source§

impl SlabItem for TextureAddressMode

Source§

const SLAB_SIZE: usize = 1usize

Source§

impl SlabItem for DebugMode

Source§

const SLAB_SIZE: usize = 1usize

Source§

impl SlabItem for LightStyle

Source§

const SLAB_SIZE: usize = 1usize

Source§

impl SlabItem for AtlasTexture

Source§

const SLAB_SIZE: usize = 8usize

Source§

impl SlabItem for TextureModes

Source§

const SLAB_SIZE: usize = 2usize

Source§

impl SlabItem for Camera

Source§

const SLAB_SIZE: usize = 35usize

Source§

impl SlabItem for VertexPrefilterEnvironmentCubemapIds

Source§

const SLAB_SIZE: usize = 2usize

Source§

impl SlabItem for Mat4

Source§

const SLAB_SIZE: usize = 16usize

Source§

impl SlabItem for Quat

Source§

const SLAB_SIZE: usize = 4usize

Source§

impl SlabItem for UVec2

Source§

const SLAB_SIZE: usize = 2usize

Source§

impl SlabItem for UVec3

Source§

const SLAB_SIZE: usize = 3usize

Source§

impl SlabItem for UVec4

Source§

const SLAB_SIZE: usize = 4usize

Source§

impl SlabItem for Vec2

Source§

const SLAB_SIZE: usize = 2usize

Source§

impl SlabItem for Vec3

Source§

const SLAB_SIZE: usize = 3usize

Source§

impl SlabItem for Vec4

Source§

const SLAB_SIZE: usize = 4usize

Source§

impl SlabItem for DirectionalLight

Source§

const SLAB_SIZE: usize = 8usize

Source§

impl SlabItem for Light

Source§

const SLAB_SIZE: usize = 3usize

Source§

impl SlabItem for PointLight

Source§

const SLAB_SIZE: usize = 8usize

Source§

impl SlabItem for SpotLight

Source§

const SLAB_SIZE: usize = 13usize

Source§

impl SlabItem for Material

Source§

const SLAB_SIZE: usize = 22usize

Source§

impl SlabItem for PbrConfig

Source§

const SLAB_SIZE: usize = 9usize

Source§

impl SlabItem for DrawIndirectArgs
where u32: SlabItem,

Source§

const SLAB_SIZE: usize = 4usize

Source§

impl SlabItem for MorphTarget
where Vec3: SlabItem,

Source§

const SLAB_SIZE: usize = 9usize

Source§

impl SlabItem for Renderlet

Source§

const SLAB_SIZE: usize = 14usize

Source§

impl SlabItem for Skin

Source§

const SLAB_SIZE: usize = 4usize

Source§

impl SlabItem for Vertex

Source§

const SLAB_SIZE: usize = 26usize

Source§

impl SlabItem for Tonemap
where u32: SlabItem,

Source§

const SLAB_SIZE: usize = 1usize

Source§

impl SlabItem for TonemapConstants

Source§

const SLAB_SIZE: usize = 2usize

Source§

impl SlabItem for Transform

Source§

const SLAB_SIZE: usize = 10usize

Source§

impl<T> SlabItem for Array<T>
where T: SlabItem,

Source§

const SLAB_SIZE: usize = 2usize

Source§

impl<T> SlabItem for Id<T>
where T: Any,

Source§

const SLAB_SIZE: usize = 1usize