我一直在尝试实现一个结构体的序列化和序列化特征。我只是沿着编译器告诉我的路线走下去,然后卡住了。
我从这个struct开始:
#[derive(Serialize, Deserialize)]
struct FileMetadata {
file_path: PathBuf,
last_updated: SystemTime,
mime_type: MediaType,
}
字符串
并得到以下错误:expected named lifetime parameter, help: consider introducing a named lifetime parameter.
所以我这样做:
#[derive(Serialize, Deserialize)]
struct FileMetadata<'a> {
file_path: PathBuf,
last_updated: SystemTime,
mime_type: MediaType<'a>,
}
型
这给出了以下错误:requires that
'de must outlive
' a , help: consider adding the following bound: 'de: 'a
。
所以我照它说的做:
#[derive(Serialize, Deserialize)]
struct FileMetadata<'a, 'de>
where
'de: 'a {
file_path: PathBuf,
last_updated: SystemTime,
mime_type: MediaType<'a>,
}
型
现在我有两个错误:
cannot deserialize when there is a lifetime parameter called 'de
个unused parameter, help: consider removing
'de, referring to it in a field, or using a marker such as PhantomData.
我也试着遵循this post的建议,但这是同一条路。
我可以解决第二个错误,但不能解决第一个。我发现这个错误非常令人沮丧,因为编译器把我送上了一条路,最后给了我一个相当于"计算机说不"的错误。我在这里错过了什么,有人能解释我哪里出错了,以及我如何在未来避免这类问题。
1条答案
按热度按时间xu3bshqb1#
这是
mediatype
crate的0.19.15版本中的一个bug。参见https://github.com/picoHz/mediatype/pull/15。你可以像这样处理它:
字符串