Skip to main content

FilteredResourcesMut

Struct FilteredResourcesMut 

Source
pub struct FilteredResourcesMut<'w, 's> { /* private fields */ }
๐Ÿ‘ŽDeprecated since 0.20.0:

Use QueryState and QueryBuilder instead.

Expand description

Provides mutable access to a set of Resources defined by the contained Access.

Use FilteredResources if you only need read-only access to resources.

To be useful as a SystemParam, this must be configured using a FilteredResourcesMutParamBuilder to build the system using a SystemParamBuilder.

ยงExamples

// Use `FilteredResourcesMutParamBuilder` to declare access to resources.
let system = (FilteredResourcesMutParamBuilder::new(|builder| {
    builder.add_write::<B>().add_read::<C>().add_write::<D>();
}),)
    .build_state(&mut world)
    .build_system(resource_system);

world.init_resource::<A>();
world.init_resource::<C>();
world.init_resource::<D>();

fn resource_system(mut res: FilteredResourcesMut) {
    // The resource exists, but we have no access, so we can't read it or write it.
    assert!(res.get::<A>().is_err());
    assert!(res.get_mut::<A>().is_err());
    // The resource doesn't exist, so we can't read it or write it.
    assert!(res.get::<B>().is_err());
    assert!(res.get_mut::<B>().is_err());
    // The resource exists and we have read access, so we can read it but not write it.
    let c = res.get::<C>().unwrap();
    assert!(res.get_mut::<C>().is_err());
    // The resource exists and we have write access, so we can read it or write it.
    let d = res.get::<D>().unwrap();
    let d = res.get_mut::<D>().unwrap();
    // The type parameter can be left out if it can be determined from use.
    let c: Ref<C> = res.get().unwrap();
}

This can be used alongside ordinary Res and ResMut parameters if they do not conflict.

let system = (
    FilteredResourcesMutParamBuilder::new(|builder| {
        builder.add_read::<A>().add_write::<B>();
    }),
    ParamBuilder,
    ParamBuilder,
)
    .build_state(&mut world)
    .build_system(resource_system);

// Read access to A does not conflict with read access to A or write access to C.
// Write access to B does not conflict with access to A or C.
fn resource_system(mut filtered: FilteredResourcesMut, res_a: Res<A>, res_mut_c: ResMut<C>) {
    let res_a_2: Ref<A> = filtered.get::<A>().unwrap();
    let res_mut_b: Mut<B> = filtered.get_mut::<B>().unwrap();
}

But it will conflict if it tries to read the same resource that another parameter writes, or write the same resource that another parameter reads.

โ“˜
let system = (
    FilteredResourcesMutParamBuilder::new(|builder| {
        builder.add_write::<A>();
    }),
    ParamBuilder,
)
    .build_state(&mut world)
    .build_system(invalid_resource_system);

// Read access to A conflicts with write access to A.
fn invalid_resource_system(filtered: FilteredResourcesMut, res_a: Res<A>) { }

Implementationsยง

Sourceยง

impl<'w, 's> FilteredResourcesMut<'w, 's>

Source

pub fn as_readonly(&self) -> FilteredResources<'_, 's>

Gets read-only access to all of the resources this FilteredResourcesMut can access.

Source

pub fn reborrow(&mut self) -> FilteredResourcesMut<'_, 's>

Returns a new instance with a shorter lifetime. This is useful if you have &mut FilteredResourcesMut, but you need FilteredResourcesMut.

Source

pub fn access(&self) -> &Access

Returns a reference to the underlying Access.

Source

pub fn has_read<R>(&self) -> bool
where R: Resource,

Returns true if the FilteredResources has read access to the given resource. Note that Self::get() may still return Err if the resource does not exist.

Source

pub fn has_write<R>(&self) -> bool
where R: Resource,

Returns true if the FilteredResources has write access to the given resource. Note that Self::get_mut() may still return Err if the resource does not exist.

Source

pub fn get<R>(&self) -> Result<Ref<'_, R>, ResourceFetchError>
where R: Resource,

Gets a reference to the resource of the given type if it exists and the FilteredResources has access to it.

Source

pub fn get_by_id( &self, component_id: ComponentId, ) -> Result<Ptr<'_>, ResourceFetchError>

Gets a pointer to the resource with the given ComponentId if it exists and the FilteredResources has access to it.

Source

pub fn get_mut<R>(&mut self) -> Result<Mut<'_, R>, ResourceFetchError>
where R: Resource,

Gets a mutable reference to the resource of the given type if it exists and the FilteredResources has access to it.

Source

pub fn get_mut_by_id( &mut self, component_id: ComponentId, ) -> Result<MutUntyped<'_>, ResourceFetchError>

Gets a mutable pointer to the resource with the given ComponentId if it exists and the FilteredResources has access to it.

Source

pub fn into_mut<R>(self) -> Result<Mut<'w, R>, ResourceFetchError>
where R: Resource,

Consumes self and gets mutable access to resource of the given type with the world 'w lifetime if it exists and the FilteredResources has access to it.

Source

pub fn into_mut_by_id( self, component_id: ComponentId, ) -> Result<MutUntyped<'w>, ResourceFetchError>

Consumes self and gets mutable access to resource with the given ComponentId with the world 'w lifetime if it exists and the FilteredResources has access to it.

Trait Implementationsยง

Sourceยง

impl<'w, 's> From<&'w FilteredResourcesMut<'_, 's>> for FilteredResources<'w, 's>

Sourceยง

fn from( resources: &'w FilteredResourcesMut<'_, 's>, ) -> FilteredResources<'w, 's>

Converts to this type from the input type.
Sourceยง

impl<'w> From<&'w mut World> for FilteredResourcesMut<'w, 'static>

Sourceยง

fn from(value: &'w mut World) -> FilteredResourcesMut<'w, 'static>

Converts to this type from the input type.
Sourceยง

impl<'w, 's> From<FilteredResourcesMut<'w, 's>> for FilteredResources<'w, 's>

Sourceยง

fn from(resources: FilteredResourcesMut<'w, 's>) -> FilteredResources<'w, 's>

Converts to this type from the input type.
Sourceยง

impl SystemParam for FilteredResourcesMut<'_, '_>

Sourceยง

type State = Access

Used to store data which persists across invocations of a system.
Sourceยง

type Item<'world, 'state> = FilteredResourcesMut<'world, 'state>

The item type returned when constructing this system param. The value of this associated type should be Self, instantiated with new lifetimes. Read more
Sourceยง

fn init_state( _world: &mut World, ) -> <FilteredResourcesMut<'_, '_> as SystemParam>::State

Creates a new instance of this paramโ€™s State.
Sourceยง

fn init_access( access: &<FilteredResourcesMut<'_, '_> as SystemParam>::State, system_meta: &mut SystemMeta, system_access: &mut SystemAccess, world: &mut World, )

Registers any World access used by this SystemParam. Read more
Sourceยง

unsafe fn get_param<'world, 'state>( state: &'state mut <FilteredResourcesMut<'_, '_> as SystemParam>::State, system_meta: &SystemMeta, world: UnsafeWorldCell<'world>, change_tick: Tick, ) -> Result<<FilteredResourcesMut<'_, '_> as SystemParam>::Item<'world, 'state>, SystemParamValidationError>

Creates a parameter to be passed into a SystemParamFunction. Read more
Sourceยง

fn apply(state: &mut Self::State, system_meta: &SystemMeta, world: &mut World)

Applies any deferred mutations stored in this SystemParamโ€™s state. This is used to apply Commands during ApplyDeferred.
Sourceยง

fn queue( state: &mut Self::State, system_meta: &SystemMeta, world: DeferredWorld<'_>, )

Queues any deferred mutations to be applied at the next ApplyDeferred.
Sourceยง

impl<'w, 's, T> SystemParamBuilder<FilteredResourcesMut<'w, 's>> for FilteredResourcesMutParamBuilder<T>

Sourceยง

fn build( self, world: &mut World, ) -> <FilteredResourcesMut<'w, 's> as SystemParam>::State

Registers any World access used by this SystemParam and creates a new instance of this paramโ€™s State.
Sourceยง

fn build_state(self, world: &mut World) -> SystemState<P>

Create a SystemState from a SystemParamBuilder. To create a system, call SystemState::build_system on the result.
Sourceยง

fn build_system<Marker, In, Out, Func>( self, func: Func, ) -> IntoBuilderSystem<Marker, In, Out, Func, Self>
where Self: 'static, Func: SystemParamFunction<Marker, Param = P>,

Create a System from a SystemParamBuilder directly. Read more

Auto Trait Implementationsยง

ยง

impl<'w, 's> !RefUnwindSafe for FilteredResourcesMut<'w, 's>

ยง

impl<'w, 's> !UnwindSafe for FilteredResourcesMut<'w, 's>

ยง

impl<'w, 's> Freeze for FilteredResourcesMut<'w, 's>

ยง

impl<'w, 's> Send for FilteredResourcesMut<'w, 's>

ยง

impl<'w, 's> Sync for FilteredResourcesMut<'w, 's>

ยง

impl<'w, 's> Unpin for FilteredResourcesMut<'w, 's>

ยง

impl<'w, 's> UnsafeUnpin for FilteredResourcesMut<'w, 's>

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> ConditionalSend for T
where T: Send,

Sourceยง

impl<T> Downcast for T
where T: Any,

Sourceยง

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>

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)

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)

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
where T: Any + Send,

Sourceยง

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Sourceยง

impl<T> From<T> for T

Sourceยง

fn from(t: T) -> T

Returns the argument unchanged.

Sourceยง

impl<T> Instrument for T

Sourceยง

fn instrument(self, span: Span) -> Instrumented<Self> โ“˜

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Sourceยง

fn in_current_span(self) -> Instrumented<Self> โ“˜

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoResult<T> for T

Sourceยง

fn into_result(self) -> Result<T, RunSystemError>

Converts this type into the system output type.
Sourceยง

impl<A> Is for A
where A: Any,

Sourceยง

fn is<T>() -> bool
where T: Any,

Checks if the current type โ€œisโ€ another type, using a TypeId equality comparison. This is most useful in the context of generic logic. Read more
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.
Sourceยง

impl<T> WithSubscriber for T

Sourceยง

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> โ“˜
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Sourceยง

fn with_current_subscriber(self) -> WithDispatch<Self> โ“˜

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more