pub trait ResourceSet<'a> {
type Result: 'a;
// Required method
unsafe fn fetch_unchecked(resources: &'a UnsafeResources) -> Self::Result;
// Provided methods
fn fetch_mut(resources: &'a mut Resources) -> Self::Result { ... }
fn fetch(resources: &'a Resources) -> Self::Result
where Self: ReadOnly { ... }
}
Expand description
Trait which is implemented for tuples of resources and singular resources. This abstracts fetching resources to allow for ergonomic fetching.
§Example:
struct TypeA(usize);
struct TypeB(usize);
let mut resources = Resources::default();
resources.insert(TypeA(55));
resources.insert(TypeB(12));
{
let (a, mut b) = <(Read<TypeA>, Write<TypeB>)>::fetch_mut(&mut resources);
assert_ne!(a.0, b.0);
b.0 = a.0;
}
{
let (a, b) = <(Read<TypeA>, Read<TypeB>)>::fetch(&resources);
assert_eq!(a.0, b.0);
}
Required Associated Types§
Required Methods§
Sourceunsafe fn fetch_unchecked(resources: &'a UnsafeResources) -> Self::Result
unsafe fn fetch_unchecked(resources: &'a UnsafeResources) -> Self::Result
Fetches all defined resources, without checking mutability.
§Safety
It is up to the end user to validate proper mutability rules across the resources being accessed.
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.