Expand description
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 {
b.up()
}
Traitsยง
- Upcast
- Use this trait to perform your upcasts on dyn traits. Make sure to require it in the supertrait!
- Upcast
From - Implement this trait for your
dyn Trait
types for allT: Trait