pub struct ChangeSet<T> { /* private fields */ }
Expand description
Change set that can be collected from an iterator, and joined on for easy application to components.
Example
pub struct Health(i32);
impl Component for Health {
type Storage = DenseVecStorage<Self>;
}
let a = world.create_entity().with(Health(100)).build();
let b = world.create_entity().with(Health(200)).build();
let changeset = [(a, 32), (b, 12), (b, 13)]
.iter()
.cloned()
.collect::<ChangeSet<i32>>();
for (health, modifier) in (&mut world.write_storage::<Health>(), &changeset).join() {
health.0 -= modifier;
}
Implementations§
Trait Implementations§
source§impl<T> Extend<(Entity, T)> for ChangeSet<T>where
T: AddAssign,
impl<T> Extend<(Entity, T)> for ChangeSet<T>where T: AddAssign,
source§fn extend<I: IntoIterator<Item = (Entity, T)>>(&mut self, iter: I)
fn extend<I: IntoIterator<Item = (Entity, T)>>(&mut self, iter: I)
Extends a collection with the contents of an iterator. Read more
source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
🔬This is a nightly-only experimental API. (
extend_one
)Extends a collection with exactly one element.
source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
🔬This is a nightly-only experimental API. (
extend_one
)Reserves capacity in a collection for the given number of additional elements. Read more
source§impl<'a, T> Join for &'a ChangeSet<T>
impl<'a, T> Join for &'a ChangeSet<T>
§type Value = &'a DenseVecStorage<T>
type Value = &'a DenseVecStorage<T>
Type of joined storages.
source§unsafe fn open(self) -> (Self::Mask, Self::Value)
unsafe fn open(self) -> (Self::Mask, Self::Value)
Open this join by returning the mask and the storages. Read more
source§unsafe fn get(value: &mut Self::Value, id: Index) -> Self::Type
unsafe fn get(value: &mut Self::Value, id: Index) -> Self::Type
Get a joined component value by a given index. Read more
source§fn join(self) -> JoinIter<Self> ⓘwhere
Self: Sized,
fn join(self) -> JoinIter<Self> ⓘwhere Self: Sized,
Create a joined iterator over the contents.
source§fn is_unconstrained() -> bool
fn is_unconstrained() -> bool
If this
Join
typically returns all indices in the mask, then iterating
over only it or combined with other joins that are also dangerous will
cause the JoinIter
to go through all indices which is usually not what
is wanted and will kill performance.source§impl<'a, T> Join for &'a mut ChangeSet<T>
impl<'a, T> Join for &'a mut ChangeSet<T>
§type Value = SharedGetMutOnly<'a, T, DenseVecStorage<T>>
type Value = SharedGetMutOnly<'a, T, DenseVecStorage<T>>
Type of joined storages.
source§unsafe fn open(self) -> (Self::Mask, Self::Value)
unsafe fn open(self) -> (Self::Mask, Self::Value)
Open this join by returning the mask and the storages. Read more
source§unsafe fn get(value: &mut Self::Value, id: Index) -> Self::Type
unsafe fn get(value: &mut Self::Value, id: Index) -> Self::Type
Get a joined component value by a given index. Read more
source§fn join(self) -> JoinIter<Self> ⓘwhere
Self: Sized,
fn join(self) -> JoinIter<Self> ⓘwhere Self: Sized,
Create a joined iterator over the contents.
source§fn is_unconstrained() -> bool
fn is_unconstrained() -> bool
If this
Join
typically returns all indices in the mask, then iterating
over only it or combined with other joins that are also dangerous will
cause the JoinIter
to go through all indices which is usually not what
is wanted and will kill performance.source§impl<T> Join for ChangeSet<T>
impl<T> Join for ChangeSet<T>
A Join
implementation for ChangeSet
that simply removes all the entries
on a call to get
.
§type Value = DenseVecStorage<T>
type Value = DenseVecStorage<T>
Type of joined storages.
source§unsafe fn open(self) -> (Self::Mask, Self::Value)
unsafe fn open(self) -> (Self::Mask, Self::Value)
Open this join by returning the mask and the storages. Read more
source§unsafe fn get(value: &mut Self::Value, id: Index) -> Self::Type
unsafe fn get(value: &mut Self::Value, id: Index) -> Self::Type
Get a joined component value by a given index. Read more
source§fn join(self) -> JoinIter<Self> ⓘwhere
Self: Sized,
fn join(self) -> JoinIter<Self> ⓘwhere Self: Sized,
Create a joined iterator over the contents.
source§fn is_unconstrained() -> bool
fn is_unconstrained() -> bool
If this
Join
typically returns all indices in the mask, then iterating
over only it or combined with other joins that are also dangerous will
cause the JoinIter
to go through all indices which is usually not what
is wanted and will kill performance.source§impl<'a, T> LendJoin for &'a ChangeSet<T>
impl<'a, T> LendJoin for &'a ChangeSet<T>
§type Value = &'a DenseVecStorage<T>
type Value = &'a DenseVecStorage<T>
Type of joined storages.
source§unsafe fn open(self) -> (Self::Mask, Self::Value)
unsafe fn open(self) -> (Self::Mask, Self::Value)
Open this join by returning the mask and the storages. Read more
source§unsafe fn get<'next>(
value: &'next mut Self::Value,
id: Index
) -> <Self as LendJoinඞType<'next>>::T
unsafe fn get<'next>( value: &'next mut Self::Value, id: Index ) -> <Self as LendJoinඞType<'next>>::T
Get a joined component value by a given index. Read more
source§fn lend_join(self) -> JoinLendIter<Self>where
Self: Sized,
fn lend_join(self) -> JoinLendIter<Self>where Self: Sized,
Create a joined lending iterator over the contents.
source§fn maybe(self) -> MaybeJoin<Self>where
Self: Sized,
fn maybe(self) -> MaybeJoin<Self>where Self: Sized,
Returns a structure that implements
Join
/LendJoin
/MaybeJoin
if the
contained T
does and that yields all indices, returning None
for all
missing elements and Some(T)
for found elements. Read moresource§fn is_unconstrained() -> bool
fn is_unconstrained() -> bool
If this
LendJoin
typically returns all indices in the mask, then
iterating over only it or combined with other joins that are also
dangerous will cause the JoinLendIter
to go through all indices which
is usually not what is wanted and will kill performance.source§impl<'a, T> LendJoin for &'a mut ChangeSet<T>
impl<'a, T> LendJoin for &'a mut ChangeSet<T>
§type Value = &'a mut DenseVecStorage<T>
type Value = &'a mut DenseVecStorage<T>
Type of joined storages.
source§unsafe fn open(self) -> (Self::Mask, Self::Value)
unsafe fn open(self) -> (Self::Mask, Self::Value)
Open this join by returning the mask and the storages. Read more
source§unsafe fn get<'next>(
value: &'next mut Self::Value,
id: Index
) -> <Self as LendJoinඞType<'next>>::T
unsafe fn get<'next>( value: &'next mut Self::Value, id: Index ) -> <Self as LendJoinඞType<'next>>::T
Get a joined component value by a given index. Read more
source§fn lend_join(self) -> JoinLendIter<Self>where
Self: Sized,
fn lend_join(self) -> JoinLendIter<Self>where Self: Sized,
Create a joined lending iterator over the contents.
source§fn maybe(self) -> MaybeJoin<Self>where
Self: Sized,
fn maybe(self) -> MaybeJoin<Self>where Self: Sized,
Returns a structure that implements
Join
/LendJoin
/MaybeJoin
if the
contained T
does and that yields all indices, returning None
for all
missing elements and Some(T)
for found elements. Read moresource§fn is_unconstrained() -> bool
fn is_unconstrained() -> bool
If this
LendJoin
typically returns all indices in the mask, then
iterating over only it or combined with other joins that are also
dangerous will cause the JoinLendIter
to go through all indices which
is usually not what is wanted and will kill performance.source§impl<T> LendJoin for ChangeSet<T>
impl<T> LendJoin for ChangeSet<T>
A Join
implementation for ChangeSet
that simply removes all the entries
on a call to get
.
§type Value = DenseVecStorage<T>
type Value = DenseVecStorage<T>
Type of joined storages.
source§unsafe fn open(self) -> (Self::Mask, Self::Value)
unsafe fn open(self) -> (Self::Mask, Self::Value)
Open this join by returning the mask and the storages. Read more
source§unsafe fn get<'next>(
value: &'next mut Self::Value,
id: Index
) -> <Self as LendJoinඞType<'next>>::T
unsafe fn get<'next>( value: &'next mut Self::Value, id: Index ) -> <Self as LendJoinඞType<'next>>::T
Get a joined component value by a given index. Read more
source§fn lend_join(self) -> JoinLendIter<Self>where
Self: Sized,
fn lend_join(self) -> JoinLendIter<Self>where Self: Sized,
Create a joined lending iterator over the contents.
source§fn maybe(self) -> MaybeJoin<Self>where
Self: Sized,
fn maybe(self) -> MaybeJoin<Self>where Self: Sized,
Returns a structure that implements
Join
/LendJoin
/MaybeJoin
if the
contained T
does and that yields all indices, returning None
for all
missing elements and Some(T)
for found elements. Read moresource§fn is_unconstrained() -> bool
fn is_unconstrained() -> bool
If this
LendJoin
typically returns all indices in the mask, then
iterating over only it or combined with other joins that are also
dangerous will cause the JoinLendIter
to go through all indices which
is usually not what is wanted and will kill performance.impl<'a, T> RepeatableLendGet for &'a ChangeSet<T>
impl<'a, T> RepeatableLendGet for &'a mut ChangeSet<T>
Auto Trait Implementations§
impl<T> !RefUnwindSafe for ChangeSet<T>
impl<T> Send for ChangeSet<T>where T: Send,
impl<T> Sync for ChangeSet<T>where T: Sync,
impl<T> Unpin for ChangeSet<T>where T: Unpin,
impl<T> UnwindSafe for ChangeSet<T>where T: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> TryDefault for Twhere
T: Default,
impl<T> TryDefault for Twhere T: Default,
source§fn try_default() -> Result<T, String>
fn try_default() -> Result<T, String>
Tries to create the default.
source§fn unwrap_default() -> Self
fn unwrap_default() -> Self
Calls
try_default
and panics on an error case.