upcast (cargo): 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() } ``` 
Keywords: supertraits|upcast