Skip to main content

CastRc

Trait CastRc 

Source
pub trait CastRc {
    // Required method
    fn cast<T: ?Sized + 'static>(self: Rc<Self>) -> Result<Rc<T>, Rc<Self>>;
}
Expand description

A trait that is blanket-implemented for traits extending CastFrom to allow for casting of a trait object for it behind an Rc to a trait object for another trait implemented by the underlying value.

§Examples

use intertrait::cast::*;

impl Source for Data {}
let data = Data;
let source = Rc::new(data);
let greet = source.cast::<dyn Greet>();
greet.unwrap_or_else(|_| panic!("must not happen")).greet();

Required Methods§

Source

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

Casts an Rc for this trait into that for type T.

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> CastRc for S

A blanket implementation of CastRc for traits extending CastFrom.