struct Caster {
cast_to_ref: Box<dyn Any + Send + Sync>,
cast_to_arc: Box<dyn Any + Send + Sync>,
}
Expand description
A single entry in a CastTable
.
Each Caster
exists for one concrete object type “O
”, and one trait type “Tr
”.
Note that we use Box
here in order to support generic types: you can’t
get a &'static
reference to a function that takes a generic type in
current rust.
Fields§
§cast_to_ref: Box<dyn Any + Send + Sync>
Actual type: fn(Arc<dyn Object>) -> Arc<dyn Tr>
Panics if Object does not have the expected type (O
).
cast_to_arc: Box<dyn Any + Send + Sync>
Actual type: fn(Arc<dyn Object>) -> Arc<dyn Tr>
Panics if Object does not have the expected type (O
).
Auto Trait Implementations§
impl Freeze for Caster
impl !RefUnwindSafe for Caster
impl Send for Caster
impl Sync for Caster
impl Unpin for Caster
impl !UnwindSafe for Caster
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
Mutably borrows from an owned value. Read more
§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>
Converts
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
downcast
into Box<dyn 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>
Converts
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which 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)
Converts
&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)
Converts
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.