#dyn #supertraits #value #mut #user #along #helping

upcast

一个简单的特质,帮助进行 dyn 超特质的向上转换。 pub trait A {} pub trait B: A + Upcast<dyn A> {} // 将此放入您的库中 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 } } // 现在您的用户可以在需要时进行向上转换,或者您可以在实现中进行 fn do_cast(b: &dyn B) -> &dyn A { b.up() }

1 个不稳定版本

0.1.0 2019 年 8 月 9 日

#8 in #along

Download history 21/week @ 2024-03-30 2/week @ 2024-04-06

每月51次下载

MIT 协议

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()
}

无运行时依赖