Rust 如何为实现反序列化的关联类型指定生存期
我有一个特点是这样定义的:Rust 如何为实现反序列化的关联类型指定生存期,rust,Rust,我有一个特点是这样定义的: use serde::{Deserialize, Serialize}; trait MyTrait { type InputDoc: Deserialize; //Error: missing lifetime specifier: expected lifetime parameter type OutputDoc: Serialize; fn create() -> Self; fn process(&a
use serde::{Deserialize, Serialize};
trait MyTrait {
type InputDoc: Deserialize; //Error: missing lifetime specifier: expected lifetime parameter
type OutputDoc: Serialize;
fn create() -> Self;
fn process(& self, doc: &Self::InputDoc) -> Self::OutputDoc;
}
fn run<M: MyTrait>() -> () {
let mytrait = M::create();
let data = ...load some string from somewhere ...;
let doc: serde_json::Result<M::InputDoc> = serde_json::from_str(data);
let result = mytrait.process(&doc);
}
我想用这样的特质:
use serde::{Deserialize, Serialize};
trait MyTrait {
type InputDoc: Deserialize; //Error: missing lifetime specifier: expected lifetime parameter
type OutputDoc: Serialize;
fn create() -> Self;
fn process(& self, doc: &Self::InputDoc) -> Self::OutputDoc;
}
fn run<M: MyTrait>() -> () {
let mytrait = M::create();
let data = ...load some string from somewhere ...;
let doc: serde_json::Result<M::InputDoc> = serde_json::from_str(data);
let result = mytrait.process(&doc);
}
fn run()->(){
让mytrait=M::create();
让数据=…从某处加载一些字符串。。。;
让doc:serde_json::Result=serde_json::from_str(数据);
让结果=mytrait.process(&doc);
}
这个问题看起来类似于,但我无法让它与建议的解决方案一起工作。事实上,我根本不明白为什么需要生命,这使得解决问题变得更加困难。有人能解释一下如何指定一个生命周期,使我的示例能够工作吗?这能回答您的问题吗?简而言之,您可以使用
反序列化
,这实际上是的HRTB的简写;这也回答了你的问题吗?简而言之,您可以使用反序列化
,这实际上是
的HRTB的简写;另见