Skip to main content

CastBox

Trait CastBox 

Source
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§

Source

fn cast<T: ?Sized + 'static>(self: Box<Self>) -> Result<Box<T>, Box<Self>>

Casts a box to this trait into that of type T. If fails, returns the receiver.

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.

Implementors§

Source§

impl<S: ?Sized + CastFrom> CastBox for S

A blanket implementation of CastBox for traits extending CastFrom.