pub trait CastBox {
// Required method
fn cast<T: ?Sized + 'static>(self: Box<Self>) -> Result<Box<T>, Box<Self>>;
}Expand description
A trait that is blanket-implemented for traits extending CastFrom to allow for casting
of a trait object for it behind a Box to a trait object for another trait
implemented by the underlying value.
§Examples
use intertrait::cast::*;
impl Source for Data {}
let data = Box::new(Data);
let source: Box<dyn Source> = data;
let greet = source.cast::<dyn Greet>();
greet.unwrap_or_else(|_| panic!("casting failed")).greet();Required 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.