有什么方法可以从特征的实现者返回通用类型参数?

时间:2020-05-13 20:32:57

标签: rust

我有一个Vec<Box<dyn Parent>>P结构实现Parent,并具有一个data字段,该字段是实现Child的泛型。有什么方法可以从data特征返回Parent吗?

trait Child: Clone {
    type Msg;
}

trait Parent {
    // fn get_child(&self) -> ?;
}

struct P<T> {
    data: T,
}

impl<T: Child> Parent for P<T> {}

#[derive(Clone)]
struct A;
#[derive(Clone)]
struct B;

impl Child for A {
    type Msg = ();
}
impl Child for B {
    type Msg = ();
}

fn main() {
    let p: Vec<Box<dyn Parent>> = vec![
        Box::new(P { data: A {} }),
        Box::new(P { data: B {} })
    ];
}

0 个答案:

没有答案