首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决Serde反序列化的终身错误?

如何解决Serde反序列化的终身错误?
EN

Stack Overflow用户
提问于 2022-07-04 17:37:25
回答 1查看 99关注 0票数 0

目标:--我希望实现这个特性,而不会出现终身错误。

依赖关系:pqcrypto-dilithium = "0.4.5"serde = {version = "1.0.138", features = ["derive"]}。在Cargo.toml中导入这个

进口:

代码语言:javascript
复制
pub use pqcrypto_dilithium::dilithium5::*;
pub use pqcrypto_dilithium::dilithium5::DetachedSignature;
pub use serde::ser::{SerializeTuple};
pub use serde::de::Visitor;
pub use serde::{Serialize, Serializer, Deserialize, Deserializer};

Seriaize实现功能正常,但反序列化实现存在生存期问题。

代码语言:javascript
复制
#[derive(Serialize, Deserialize)]
pub struct Keys {
    pub public_key: pqcrypto_dilithium::dilithium5::PublicKey,
    pub private_key: pqcrypto_dilithium::dilithium5::SecretKey,
}

impl Serialize for Keys {
    fn serialize<S>(&self, serializer: &mut S) -> Result<S::Ok, S::Error>
        where S: Serializer
    {
        let mut state = serializer.serialize_tuple(2)?;
        state.serialize_element(&self.public_key)?;
        state.serialize_element(&self.private_key)?;
        state.end()
    }
}

impl Deserialize<'de> for Keys {
fn deserialize<D>(deserializer: &mut D) -> Result<Self, D::Error>
    where D: Deserializer<'de>
{
    deserializer.deserialize_tuple(2, Visitor)
}
}

这里的问题在于Keys的反序列化实现。我得到了这个错误。

代码语言:javascript
复制
use of undeclared lifetime name `'de`
undeclared lifetimerustcE0261
crypto.rs(36, 5): consider introducing lifetime `'de` here: `<'de>`
crypto.rs(37, 20): consider introducing lifetime `'de` here: `'de, `
[E0261] use of undeclared lifetime name `'de`. 
[Note] undeclared lifetime
EN

回答 1

Stack Overflow用户

发布于 2022-07-04 17:55:01

正确答案:

代码语言:javascript
复制
impl <'de> Deserialize<'de> for Keys {
    fn deserialize<D>(deserializer: &mut D) -> Result<Self, D::Error>
        where D: Deserializer<'de>...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72860321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档