【发布时间】:2019-11-24 18:56:26
【问题描述】:
我需要像这样创建一个 Vec 代码:
use serde::{Serialize, Deserialize};
trait TPlugin<'a, Config> where Config : Serialize + Deserialize<'a> {}
#[derive(Serialize, Deserialize)]
struct MyConfig {}
struct MyPlugin1 {
conf: MyConfig,
}
impl TPlugin<MyConfig> for MyPlugin1 {}
impl MyPlugin1 {
pub fn new() -> MyConfig1 {
MyConfig1{}
}
}
fn main() {
let my_vec: Vec<Box<dyn TPlugin<????>>> = Vec::new();
my_vec.push(MyConfig1::new());
my_vec.push(MyConfig2::new());
}
我必须添加什么代码而不是“????”?我试过Box<dyn Serialize + Deserialize<'a>>,但rust告诉我“特征serde::Serialize不能变成一个对象”。
我是 Rust 的新手,所以泛型对我来说是模糊的,就像生命周期一样。我来自 Java/Typescript。 在 Java/Typescript 我写:
let myVec: Vec<TPlugin<?>>;
问候。
【问题讨论】: