gpt4 book ai didi

serialization - 如何使用需要实现者实现 serde::Deserialize 的方法创建特征

转载 作者:行者123 更新时间:2023-11-29 08:15:36 24 4
gpt4 key购买 nike

Playground link

我有一些结构是使用 from_path() 方法从 TOML 文件中反序列化的。为了防止复制代码,我尝试使用通用方法创建一个特征来执行此操作,我可以像这样实现

impl FromTomlFile for MyStruct {}

不幸的是,由于 serde::Deserialize 上的生命周期参数,这并不像我想象的那么简单。

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

我怎样才能让它工作?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com