Rust serialize::Decodable未为类型`&;实现;str`
我有一个我希望能够从json解码的结构:Rust serialize::Decodable未为类型`&;实现;str`,rust,Rust,我有一个我希望能够从json解码的结构: #[derive(RustcDecodable)] struct MyStruct<'a> { aa: Option<&'a str>, bb: Option<u64>, } 这是为什么?如何修复它?如果您查看的文档,您可以看到可以解码到的所有基本类型的列表。您会注意到&str不在列表中。这是您错误的根本原因 仔细阅读该列表可以发现,您永远无法解码为借用的类型。如果可以对字符串片段进行解码,那么解码后
#[derive(RustcDecodable)]
struct MyStruct<'a> {
aa: Option<&'a str>,
bb: Option<u64>,
}
这是为什么?如何修复它?如果您查看的文档,您可以看到可以解码到的所有基本类型的列表。您会注意到
&str
不在列表中。这是您错误的根本原因
仔细阅读该列表可以发现,您永远无法解码为借用的类型。如果可以对字符串片段进行解码,那么解码后的结构将永远与输入字符串的生命周期相关联,并且很可能整个类别的解码器都将变得不可能——想象一下直接从文件或网络流读取的解码器,其中整个输入数据永远不会在内存中完全读取
要修复此问题,请切换结构以拥有数据:
#[derive(RustcDecodable)]
struct MyStruct {
aa: Option<String>,
bb: Option<u64>,
}
如果您查阅了的文档,您可以看到可以解码到的所有基本类型的列表。您会注意到
&str
不在列表中。这是您错误的根本原因
仔细阅读该列表可以发现,您永远无法解码为借用的类型。如果可以对字符串片段进行解码,那么解码后的结构将永远与输入字符串的生命周期相关联,并且很可能整个类别的解码器都将变得不可能——想象一下直接从文件或网络流读取的解码器,其中整个输入数据永远不会在内存中完全读取
要修复此问题,请切换结构以拥有数据:
#[derive(RustcDecodable)]
struct MyStruct {
aa: Option<String>,
bb: Option<u64>,
}
你试过使用serde吗?那么,为什么要使用rustcdecoable而不是decoable呢?请注意,Rust样式是4-空格缩进。@llogiq,因为在他们使用的文档中it@AlexanderSupertramp不在我上面链接的serde文档中。但这并不重要。事实上,查看自动-
派生
处理代码,两者都是同义词。您尝试过使用serde吗?那么,为什么要使用rustcdecoable而不是decoable呢?请注意,Rust样式是4-空格缩进。@llogiq,因为在他们使用的文档中it@AlexanderSupertramp不在我上面链接的serde文档中。但这并不重要。事实上,查看自动派生处理代码,两者都是同义词。
#[derive(RustcDecodable)]
struct MyStruct<'a> {
aa: Option<Cow<'a, str>>,
bb: Option<u64>,
}