pub struct UnsafeFilteredEntityMut<'w, 's> { /* private fields */ }Expand description
Variant of FilteredEntityMut that can be used to create copies of a FilteredEntityMut, as long
as the user ensures that these won’t cause aliasing violations.
This can be useful to mutably query multiple components from a single FilteredEntityMut.
§Example Usage
// This gives the `FilteredEntityMut` access to `&mut A` and `&mut B`.
let mut query = QueryBuilder::<FilteredEntityMut>::new(&mut world)
.data::<(&mut A, &mut B)>()
.build();
let mut filtered_entity: FilteredEntityMut = query.single_mut(&mut world).unwrap();
let unsafe_filtered_entity = UnsafeFilteredEntityMut::new_readonly(&filtered_entity);
// SAFETY: the original FilteredEntityMut accesses `&mut A` and the clone accesses `&mut B`, so no aliasing violations occur.
let mut filtered_entity_clone: FilteredEntityMut = unsafe { unsafe_filtered_entity.into_mut() };
let a: Mut<A> = filtered_entity.get_mut().unwrap();
let b: Mut<B> = filtered_entity_clone.get_mut().unwrap();Implementations§
Source§impl<'w, 's> UnsafeFilteredEntityMut<'w, 's>
impl<'w, 's> UnsafeFilteredEntityMut<'w, 's>
Sourcepub fn new_readonly(filtered_entity_mut: &FilteredEntityMut<'w, 's>) -> Self
pub fn new_readonly(filtered_entity_mut: &FilteredEntityMut<'w, 's>) -> Self
Creates a UnsafeFilteredEntityMut that can be used to have multiple concurrent FilteredEntityMuts.
Sourcepub unsafe fn into_mut(self) -> FilteredEntityMut<'w, 's>
pub unsafe fn into_mut(self) -> FilteredEntityMut<'w, 's>
Returns a new instance of FilteredEntityMut.
§Safety
- The user must ensure that no aliasing violations occur when using the returned
FilteredEntityMut.
Trait Implementations§
Source§impl<'w, 's> Clone for UnsafeFilteredEntityMut<'w, 's>
impl<'w, 's> Clone for UnsafeFilteredEntityMut<'w, 's>
Source§fn clone(&self) -> UnsafeFilteredEntityMut<'w, 's>
fn clone(&self) -> UnsafeFilteredEntityMut<'w, 's>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl<'w, 's> Copy for UnsafeFilteredEntityMut<'w, 's>
Auto Trait Implementations§
impl<'w, 's> Freeze for UnsafeFilteredEntityMut<'w, 's>
impl<'w, 's> !RefUnwindSafe for UnsafeFilteredEntityMut<'w, 's>
impl<'w, 's> Send for UnsafeFilteredEntityMut<'w, 's>
impl<'w, 's> Sync for UnsafeFilteredEntityMut<'w, 's>
impl<'w, 's> Unpin for UnsafeFilteredEntityMut<'w, 's>
impl<'w, 's> !UnwindSafe for UnsafeFilteredEntityMut<'w, 's>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Converts
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Converts
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts
&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> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
Source§fn into_result(self) -> Result<T, RunSystemError>
fn into_result(self) -> Result<T, RunSystemError>
Converts this type into the system output type.
Source§impl<T> TypeData for T
impl<T> TypeData for T
Source§fn clone_type_data(&self) -> Box<dyn TypeData>
fn clone_type_data(&self) -> Box<dyn TypeData>
Creates a type-erased clone of this value.