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

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

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 recustively further split.

Implementations

impl<'a> SubWorld<'a>[src]

pub unsafe fn new_unchecked(
    world: &'a World,
    components: ComponentAccess<'a>,
    archetypes: Option<&'a BitSet>
) -> Self
[src]

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.

pub fn split<'b, T: IntoView>(&'b mut self) -> (SubWorld<'b>, SubWorld<'b>) where
    'a: 'b, 
[src]

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.

pub fn split_for_query<'q, V: IntoView, F: EntityFilter>(
    &mut self,
    _: &'q Query<V, F>
) -> (SubWorld<'_>, SubWorld<'_>)
[src]

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

impl<'a> Clone for SubWorld<'a>[src]

impl<'a> EntityStore for SubWorld<'a>[src]

impl<'a> From<&'a mut World> for SubWorld<'a>[src]

Auto Trait Implementations

impl<'a> !RefUnwindSafe for SubWorld<'a>

impl<'a> Send for SubWorld<'a>

impl<'a> Sync for SubWorld<'a>

impl<'a> Unpin for SubWorld<'a>

impl<'a> !UnwindSafe for SubWorld<'a>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Downcast for T where
    T: Any
[src]

impl<T> DowncastSync for T where
    T: Send + Sync + Any
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Pointable for T

type Init = T

The type for initializers.

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.