Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 如何为实现反序列化的关联类型指定生存期_Rust - Fatal编程技术网

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
的简写;另见