Skip to main content

Archetypes

Struct Archetypes 

Source
pub struct Archetypes {
    archetypes: Vec<Archetype>,
    by_types: HashMap<Box<[TypeId]>, u32>,
}
Expand description

Every archetype of a world.

Fields§

§archetypes: Vec<Archetype>§by_types: HashMap<Box<[TypeId]>, u32>

Implementations§

Source§

impl Archetypes

Source

pub(crate) fn new() -> Self

A pool containing only the empty archetype.

Source

pub(crate) fn find_with<T>( &self, types: T, is_match: impl FnMut(&[TypeId]) -> bool, ) -> Option<u32>
where T: ExactSizeIterator<Item = TypeId>,

The id of the archetype whose types are types as is_match reads them, or None when no such archetype is registered.

This is the allocation-free lookup: the type sequence is hashed as it is iterated and compared in place, so a caller that holds the types apart rather than in one slice builds no key for a hit. The hash comes from the map’s own hasher, so it always agrees with how the stored keys were hashed.

Relies on hashbrown’s raw-entry feature: without it this does not compile rather than silently missing every lookup.

Source

pub(crate) fn register(&mut self, archetype: Archetype) -> u32

Register a freshly built archetype and return its id.

Source

pub fn get(&self, id: u32) -> Result<&Archetype, ArchetypeAccessError>

The archetype with this id.

An id is only minted when an archetype is registered, so an id that names nothing came from another world or from arithmetic on a u32; either way it answers ArchetypeAccessError::NoSuchArchetype rather than quietly naming no archetype.

Source

pub(crate) fn get_mut( &mut self, id: u32, ) -> Result<&mut Archetype, ArchetypeAccessError>

The archetype with this id, mutably. See Archetypes::get.

Source

pub fn as_slice(&self) -> &[Archetype]

Every archetype, as a slice.

An archetype’s id is its position in this slice, which is what crate::Location::archetype and Archetype::names are read against.

Trait Implementations§

Source§

impl Debug for Archetypes

Source§

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

Reports the number of archetypes, not the archetypes themselves.

Auto Trait Implementations§

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> Component for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more