Skip to main content

WorldRef

Struct WorldRef 

Source
pub struct WorldRef { /* private fields */ }
Expand description

A reference to a World with erased lifetime for ergonomic entity traversal.

This is the single unsafe boundary in the crate. All EntityPtr instances created from a WorldRef will borrow from the original World.

§Size

8 bytes (&'static World)

§Safety

The caller must ensure:

  1. The World outlives all EntityPtr instances created from this WorldRef
  2. The World is NOT mutated while any EntityPtr exists

In Bevy systems, this is naturally satisfied: systems with &World access cannot mutate. Create WorldRef at system entry, use it for reads, and let it drop before the system returns.

For stale reference handling across mutations, use EntityHandle instead.

§Thread Safety

NOT Send, NOT Sync - must stay on the creating thread within a single system.

Implementations§

Source§

impl WorldRef

Source

pub unsafe fn new(world: &World) -> Self

Creates a new WorldRef by transmuting the lifetime to ’static.

§Safety

The caller must ensure that:

  • The World reference outlives all EntityPtr instances created from this WorldRef
  • The World is NOT mutated while any EntityPtr from this WorldRef exists
  • Typically this means the WorldRef is created at system entry and discarded at system exit
Source

pub fn entity(&self, entity: Entity) -> EntityPtr

Gets an EntityPtr for the given entity.

Returns an EntityPtr regardless of whether the entity exists. Use EntityPtr::is_alive() to check validity.

Source

pub fn entity_opt(&self, entity: Entity) -> Option<EntityPtr>

Gets an EntityPtr only if the entity exists.

Returns None if the entity has been despawned.

Source

pub fn from_handle(&self, handle: EntityHandle) -> EntityPtr

Creates an EntityPtr from an EntityHandle.

Source

pub fn get<T: Component>(&self, entity: Entity) -> Option<&T>

Gets a component directly from an entity.

Convenience method for one-off component access without creating an EntityPtr.

Source

pub fn world(&self) -> &World

Returns the underlying World reference.

This can be used to access World methods directly when needed.

Trait Implementations§

Source§

impl Debug for WorldRef

Source§

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

Formats the value using the given formatter. Read more

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> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

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

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

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

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

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

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

Source§

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

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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 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 = 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> 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
Source§

impl<T> ConditionalSend for T
where T: Send,