Serialization 如何使用要求实现者实现serde::反序列化的方法创建trait

Serialization 如何使用要求实现者实现serde::反序列化的方法创建trait,serialization,rust,lifetime,serde,Serialization,Rust,Lifetime,Serde,我有一些结构是使用from\u path()方法从TOML文件反序列化的。为了防止代码被复制,我尝试用泛型方法创建一个trait,我可以这样实现它 impl FromTomlFile for MyStruct {} 不幸的是,由于serde::Deserialize上的life参数,这并不像我想象的那么简单 use serde; use serde_derive::Deserialize; // 1.0.88 use std::fs; use std::path::Path; use toml

我有一些结构是使用
from\u path()
方法从TOML文件反序列化的。为了防止代码被复制,我尝试用泛型方法创建一个trait,我可以这样实现它

impl FromTomlFile for MyStruct {}
不幸的是,由于
serde::Deserialize
上的life参数,这并不像我想象的那么简单

use serde;
use serde_derive::Deserialize; // 1.0.88
use std::fs;
use std::path::Path;
use toml; // 0.4.10

#[derive(Deserialize)]
struct A {}

trait FromTomlFile<'de>
where
    Self: Sized + serde::Deserialize<'de>,
{
    fn from_path<P: AsRef<Path>>(path: P) -> Result<Self, toml::de::Error> {
        toml::from_str(&String::from_utf8_lossy(&fs::read(&path).unwrap()))
    }
}

impl FromTomlFile for A {} // <-- doesn't work
使用serde;
使用serde_派生::反序列化;//1.0.88
使用std::fs;
使用std::path::path;
使用toml;//0.4.10
#[导出(反序列化)]
结构A{}
来自Tomlfile的特征,
{
fn从_路径(路径:P)->结果{
toml::from_str(&String::from_utf8_lossy(&fs::read(&path).unwrap())
}
}

impl FromTomlFile for A{}/Replace
反序列化
为-这允许您摆脱显式生存期
'de

trait FromTomlFile
哪里
Self:size+serde::de::反序列化拥有,
//等