[][src]Crate upcast

Simple trait for helping along upcasting of dyn supertraits.

pub trait A {}
pub trait B: A + Upcast<dyn A> {}
// Put this in your library
impl<'a, T: A + 'a> UpcastFrom<T> for dyn A + 'a {
    fn up_from(value: &T) -> &(dyn A + 'a) { value }
    fn up_from_mut(value: &mut T) -> &mut (dyn A + 'a) { value }

// Now your users can do an upcast if needed, or you can within implementations
fn do_cast(b: &dyn B) -> &dyn A {



Use this trait to perform your upcasts on dyn traits. Make sure to require it in the supertrait!


Implement this trait for your dyn Trait types for all T: Trait