1 个不稳定版本
0.1.0 | 2019 年 8 月 9 日 |
---|
#8 in #along
每月51次下载
4KB
一个简单的特征,用于帮助提升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()
}