#[non_exhaustive]pub struct HandlerReplacement {
pub old: Option<SceneItemHandlerSet>,
pub new: Option<SceneItemHandlerSet>,
}Expand description
The two sides of a Scene::set_item_handlers, as they ride an
ItemChange::HandlersChanged.
None on either side means “no handler set at all”, which is a state an
item can be in and is distinct from an empty one.
SceneItemHandlerSet stores its closures as Rc<dyn Fn>, so carrying
both sides is a handful of refcount bumps rather than a deep copy — which
is why this could be carried and, until it was, simply was not.
#[non_exhaustive]: this crate has out-of-tree consumers.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.old: Option<SceneItemHandlerSet>What the item had before. None when it had none.
new: Option<SceneItemHandlerSet>What it has now. None when the call cleared them.
Trait Implementations§
Source§impl Clone for HandlerReplacement
impl Clone for HandlerReplacement
Source§fn clone(&self) -> HandlerReplacement
fn clone(&self) -> HandlerReplacement
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for HandlerReplacement
impl Debug for HandlerReplacement
Source§fn fmt(&self, f: &mut Formatter<'_>) -> Result
fn fmt(&self, f: &mut Formatter<'_>) -> Result
Hand-written: SceneItemHandlerSet holds Rc<dyn Fn> closures and is
not Debug, and ItemChange is. Reports which side was present,
which is the part of a handler swap that reads usefully in a log — the
same call the hand-written Debug for
RemovedItem makes about its magnets.
Auto Trait Implementations§
impl !RefUnwindSafe for HandlerReplacement
impl !Send for HandlerReplacement
impl !Sync for HandlerReplacement
impl !UnwindSafe for HandlerReplacement
impl Freeze for HandlerReplacement
impl Unpin for HandlerReplacement
impl UnsafeUnpin for HandlerReplacement
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§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>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§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>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§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.§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.impl<T> ErasedDestructor for Twhere
T: 'static,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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 more