Skip to main content

AutoQueryMut

Struct AutoQueryMut 

Source
pub struct AutoQueryMut<'a, T: Any> { /* private fields */ }
Expand description

AutoQueryMut is a struct that allows quick access of every instance of a single component mutably. (The immutable variant is AutoQuery)

§WARNING

If you ever get an error: “thread ‘main’ panicked at ‘already borrowed: BorrowMutError’” this means you have two mutable borrows to the same data. This could be because you have two mutable auto queries in the same scope. The solution is to either drop them manually or to enclose them in a block:

use sceller::prelude::*;

struct Health; // example struct

{
    let ents = Entities::default();

    let query = Query::new(&ents);
    let mut auto = query.auto::<Health>();
    
    // <snip!>
} //<- ensures that the mutable borrow is dropped at the end of this block

It contains ‘phantom’ which is a PhantomData, since the query needs to contain a type for ease of use. And a reference to ‘Entities’.

Pretty much all of this struct’s functionality is implmenting IntoIterator, in which the reference to Entities is used to get all components of the AutoQueryMut’s type ‘T’.

Implementations§

Source§

impl<'a, T: 'static> AutoQueryMut<'a, T>

Source

pub fn new(entities: &'a Entities) -> Self

Trait Implementations§

Source§

impl<'a, T: 'static> IntoIterator for AutoQueryMut<'a, T>

Source§

type IntoIter = AutoQueryMutIntoIterator<'a, T>

Which kind of iterator are we turning this into?
Source§

type Item = RefMut<'a, T>

The type of the elements being iterated over.
Source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more

Auto Trait Implementations§

§

impl<'a, T> Freeze for AutoQueryMut<'a, T>

§

impl<'a, T> !RefUnwindSafe for AutoQueryMut<'a, T>

§

impl<'a, T> !Send for AutoQueryMut<'a, T>

§

impl<'a, T> !Sync for AutoQueryMut<'a, T>

§

impl<'a, T> Unpin for AutoQueryMut<'a, T>
where T: Unpin,

§

impl<'a, T> UnsafeUnpin for AutoQueryMut<'a, T>

§

impl<'a, T> !UnwindSafe for AutoQueryMut<'a, T>

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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.