pub trait CastRef {
// Required methods
fn cast<T: ?Sized + 'static>(&self) -> Option<&T>;
fn impls<T: ?Sized + 'static>(&self) -> bool;
}Expand description
A trait that is blanket-implemented for traits extending CastFrom to allow for casting
of a trait object for it behind an immutable reference to a trait object for another trait
implemented by the underlying value.
§Examples
§Casting an immutable reference
use intertrait::cast::*;
impl Source for Data {}
let data = Data;
let source: &dyn Source = &data;
let greet = source.cast::<dyn Greet>();
greet.unwrap().greet();§Testing if a cast is possible
use intertrait::cast::*;
impl Source for Data {}
let data = Data;
let source: &dyn Source = &data;
assert!(source.impls::<dyn Greet>());
assert!(!source.impls::<dyn std::fmt::Debug>());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.