Struct legion::world::SubWorld[][src]

pub struct SubWorld<'a> { /* fields omitted */ }
Expand description

Provides access to a subset of the entities of a World.

To access a component mutably in a world, such as inside a query or via an EntryMut, you need to borrow the entire world mutably. This prevents you from accessing any other data in the world at the same time.

In some cases, we can work around this by splitting the world. We can split a world around the component types requested by a View. This will create two subworlds, the left one allowing access only to the components (and mutability) declared by the view, while the right subworld will allow access to everything but those components.

Subworlds can be recursively further split.

Implementations

Constructs a new SubWorld.

Safety

Queries assume that this type has been constructed correctly. Ensure that sub-worlds represent disjoint portions of a world and that the world is not used while any of its sub-worlds are alive.

Splits the world into two. The left world allows access only to the data declared by the view; the right world allows access to all else.

Examples
let (left, right) = world.split::<&mut Position>();

With the above, ‘left’ contains a sub-world with access only to &Position and &mut Position, and right contains a sub-world with access to everything but &Position and &mut Position.

let (left, right) = world.split::<&Position>();

In this second example, left is provided access only to &Position. right is granted permission to everything but &mut Position.

Splits the world into two. The left world allows access only to the data declared by the query’s view; the right world allows access to all else.

Trait Implementations

Returns a component storage accessor for component types declared in the specified View.

Returns an entity entry which can be used to access entity metadata and components.

Returns a mutable entity entry which can be used to access entity metadata and components.

Returns the world’s unique ID.

Performs the conversion.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

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. Read more

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

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

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

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

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.