pub struct RuntimeResources { /* private fields */ }Expand description
Typed resource registry stored on super::ViewportRuntime.
Accessible from super::context::RuntimeStepContext each frame. Resources
persist across frames until explicitly removed or the runtime is dropped.
Each type T maps to at most one value. Inserting again overwrites the previous
value of the same type.
§Ownership rules
Resources are engine-owned: they live for the lifetime of the ViewportRuntime
they belong to. Use resources for state that two or more plugins need to share
within the same runtime instance. Use plugin-local struct fields for state
that belongs to only one plugin and does not need to be shared.
§Example
// Plugin A (ANIMATE phase) writes a shared value.
fn step(&mut self, ctx: &mut RuntimeStepContext) {
ctx.resources.insert(MySharedState { value: 42 });
}
// Plugin B (POST_SIM phase) reads it.
fn step(&mut self, ctx: &mut RuntimeStepContext) {
if let Some(state) = ctx.resources.get::<MySharedState>() {
println!("shared value: {}", state.value);
}
}Implementations§
Source§impl RuntimeResources
impl RuntimeResources
Sourcepub fn insert<T: Send + 'static>(&mut self, value: T)
pub fn insert<T: Send + 'static>(&mut self, value: T)
Insert a resource, replacing any existing value of the same type.
Sourcepub fn get<T: Send + 'static>(&self) -> Option<&T>
pub fn get<T: Send + 'static>(&self) -> Option<&T>
Get a shared reference to a resource. Returns None if not present.
Sourcepub fn get_mut<T: Send + 'static>(&mut self) -> Option<&mut T>
pub fn get_mut<T: Send + 'static>(&mut self) -> Option<&mut T>
Get a mutable reference to a resource. Returns None if not present.
Trait Implementations§
Source§impl Default for RuntimeResources
impl Default for RuntimeResources
Source§fn default() -> RuntimeResources
fn default() -> RuntimeResources
Auto Trait Implementations§
impl !RefUnwindSafe for RuntimeResources
impl !Sync for RuntimeResources
impl !UnwindSafe for RuntimeResources
impl Freeze for RuntimeResources
impl Send for RuntimeResources
impl Unpin for RuntimeResources
impl UnsafeUnpin for RuntimeResources
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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>
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>
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)
&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)
&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> 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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.