pub struct UnsafeEntityCell<'w> { /* private fields */ }
Expand description

A interior-mutable reference to a particular Entity and all of its components

Implementations§

§

impl<'w> UnsafeEntityCell<'w>

pub fn id(self) -> Entity

pub fn location(self) -> EntityLocation

pub fn archetype(self) -> &'w Archetype

pub fn world(self) -> UnsafeWorldCell<'w>

pub fn contains<T>(self) -> boolwhere T: Component,

pub fn contains_id(self, component_id: ComponentId) -> bool

pub fn contains_type_id(self, type_id: TypeId) -> bool

pub unsafe fn get<T>(self) -> Option<&'w T>where T: Component,

Safety

It is the callers responsibility to ensure that

  • the UnsafeEntityCell has permission to access the component
  • no other mutable references to the component exist at the same time

pub unsafe fn get_change_ticks<T>(self) -> Option<ComponentTicks>where T: Component,

Retrieves the change ticks for the given component. This can be useful for implementing change detection in custom runtimes.

Safety

It is the callers responsibility to ensure that

  • the UnsafeEntityCell has permission to access the component
  • no other mutable references to the component exist at the same time

pub unsafe fn get_change_ticks_by_id( &self, component_id: ComponentId ) -> Option<ComponentTicks>

Retrieves the change ticks for the given ComponentId. This can be useful for implementing change detection in custom runtimes.

You should prefer to use the typed API UnsafeEntityCell::get_change_ticks where possible and only use this in cases where the actual component types are not known at compile time.

Safety

It is the callers responsibility to ensure that

  • the UnsafeEntityCell has permission to access the component
  • no other mutable references to the component exist at the same time

pub unsafe fn get_mut<T>(self) -> Option<Mut<'w, T>>where T: Component,

Safety

It is the callers responsibility to ensure that

  • the UnsafeEntityCell has permission to access the component mutably
  • no other references to the component exist at the same time
§

impl<'w> UnsafeEntityCell<'w>

pub unsafe fn get_by_id( self, component_id: ComponentId ) -> Option<Ptr<'w, Aligned>>

Gets the component of the given ComponentId from the entity.

You should prefer to use the typed API where possible and only use this in cases where the actual component types are not known at compile time.

Unlike UnsafeEntityCell::get, this returns a raw pointer to the component, which is only valid while the 'w borrow of the lifetime is active.

Safety

It is the callers responsibility to ensure that

  • the UnsafeEntityCell has permission to access the component
  • no other mutable references to the component exist at the same time

pub unsafe fn get_mut_by_id( self, component_id: ComponentId ) -> Option<MutUntyped<'w>>

Retrieves a mutable untyped reference to the given entity’s Component of the given ComponentId. Returns None if the entity does not have a Component of the given type.

You should prefer to use the typed API UnsafeEntityCell::get_mut where possible and only use this in cases where the actual types are not known at compile time.

Safety

It is the callers responsibility to ensure that

  • the UnsafeEntityCell has permission to access the component mutably
  • no other references to the component exist at the same time

Trait Implementations§

§

impl<'w> Clone for UnsafeEntityCell<'w>

§

fn clone(&self) -> UnsafeEntityCell<'w>

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
§

impl<'w> Copy for UnsafeEntityCell<'w>

Auto Trait Implementations§

§

impl<'w> !RefUnwindSafe for UnsafeEntityCell<'w>

§

impl<'w> Send for UnsafeEntityCell<'w>

§

impl<'w> Sync for UnsafeEntityCell<'w>

§

impl<'w> Unpin for UnsafeEntityCell<'w>

§

impl<'w> !UnwindSafe for UnsafeEntityCell<'w>

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T, U> AsBindGroupShaderType<U> for Twhere U: ShaderType, &'a T: for<'a> Into<U>,

§

fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U

Return the T ShaderType for self. When used in AsBindGroup derives, it is safe to assume that all images in self exist.
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> Downcast for Twhere T: Any,

§

fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for Twhere T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send + 'static>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

source§

impl<T> Instrument for T

source§

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

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

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 Twhere U: From<T>,

const: unstable · 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 Twhere T: Clone,

§

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
§

impl<T, U> ToSample<U> for Twhere U: FromSample<T>,

§

fn to_sample_(self) -> U

source§

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

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
§

impl<T> TypeData for Twhere T: 'static + Send + Sync + Clone,

§

fn clone_type_data(&self) -> Box<dyn TypeData + 'static, Global>

§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

source§

impl<T> WithSubscriber for T

source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<S, T> Duplex<S> for Twhere T: FromSample<S> + ToSample<S>,

§

impl<T> Event for Twhere T: Send + Sync + 'static,