pub trait DynCast<T>where
T: DynCastConfig,{
// Required methods
fn dyn_cast_ref(
&self,
) -> Result<&<T as DynCastConfig>::Target, &<T as DynCastConfig>::Source>;
fn dyn_cast_mut(
&mut self,
) -> Result<&mut <T as DynCastConfig>::Target, &mut <T as DynCastConfig>::Source>;
fn dyn_cast_boxed(
self: Box<Self>,
) -> Result<Box<<T as DynCastConfig>::Target>, Box<<T as DynCastConfig>::Source>>;
fn dyn_cast_rc(
self: Rc<Self>,
) -> Result<Rc<<T as DynCastConfig>::Target>, Rc<<T as DynCastConfig>::Source>>;
fn dyn_cast_arc(
self: Arc<Self>,
) -> Result<Arc<<T as DynCastConfig>::Target>, Arc<<T as DynCastConfig>::Source>>;
}Expand description
Cast a trait object (T::Source) into a different trait object (T::Target).
This trait is object safe and provides methods to convert from one fat pointer
to another. This can be used as a supertrait or via trait bounds to allow
casting between two different trait objects. But for usage it is more ergonomic
to use the methods that are provided by the DynCastExt trait than to call
the methods on this trait directly.
Required Methods§
Sourcefn dyn_cast_ref(
&self,
) -> Result<&<T as DynCastConfig>::Target, &<T as DynCastConfig>::Source>
fn dyn_cast_ref( &self, ) -> Result<&<T as DynCastConfig>::Target, &<T as DynCastConfig>::Source>
Cast a shared reference of this trait object to another trait object.
Sourcefn dyn_cast_mut(
&mut self,
) -> Result<&mut <T as DynCastConfig>::Target, &mut <T as DynCastConfig>::Source>
fn dyn_cast_mut( &mut self, ) -> Result<&mut <T as DynCastConfig>::Target, &mut <T as DynCastConfig>::Source>
Cast a mutable/unique reference of this trait object to another trait object.
Sourcefn dyn_cast_boxed(
self: Box<Self>,
) -> Result<Box<<T as DynCastConfig>::Target>, Box<<T as DynCastConfig>::Source>>
fn dyn_cast_boxed( self: Box<Self>, ) -> Result<Box<<T as DynCastConfig>::Target>, Box<<T as DynCastConfig>::Source>>
Cast a boxed trait object to another trait object.
Sourcefn dyn_cast_rc(
self: Rc<Self>,
) -> Result<Rc<<T as DynCastConfig>::Target>, Rc<<T as DynCastConfig>::Source>>
fn dyn_cast_rc( self: Rc<Self>, ) -> Result<Rc<<T as DynCastConfig>::Target>, Rc<<T as DynCastConfig>::Source>>
Cast a reference counted trait object to another trait object.
Sourcefn dyn_cast_arc(
self: Arc<Self>,
) -> Result<Arc<<T as DynCastConfig>::Target>, Arc<<T as DynCastConfig>::Source>>
fn dyn_cast_arc( self: Arc<Self>, ) -> Result<Arc<<T as DynCastConfig>::Target>, Arc<<T as DynCastConfig>::Source>>
Cast an atomically reference counted trait object to another trait object.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".