【发布时间】:2021-08-15 20:17:04
【问题描述】:
生命周期和 serde::deserialize 存在问题。
尝试阅读错误消息并尝试实现反序列化,但随后出现错误,我需要实现反序列化。
没有生命周期,它可以工作
use serde::{ Deserialize, Serialize, de::DeserializeOwned};
use std::error::Error;
use std::io::{BufReader};
use std::{ fmt::Debug};
use std::{fs::File};
#[derive(Clone, Debug, Serialize, Deserialize)]
struct User<'a> {
name: &'a str,
}
fn main(){
let b: User = read_object("user_1.json").unwrap();
}
fn read_object<T>(path: &str) -> Result<T, Box<dyn Error>>
where
T: DeserializeOwned + Debug,
{
let f = File::open(&path)?;
let reader = BufReader::new(f);
let t: T = serde_json::from_reader(reader)?;
Ok(t)
}
错误:
error: implementation of `Deserialize` is not general enough
--> src/main.rs:13:19
|
13 | let b: User = read_object("user_1.json").unwrap();
| ^^^^^^^^^^^ implementation of `Deserialize` is not general enough
|
= note: `User<'_>` must implement `Deserialize<'0>`, for any lifetime `'0`...
= note: ...but `User<'_>` actually implements `Deserialize<'1>`, for some specific lifetime `'1`
【问题讨论】:
标签: rust