目标:--我希望实现这个特性,而不会出现终身错误。
依赖关系:pqcrypto-dilithium = "0.4.5"和serde = {version = "1.0.138", features = ["derive"]}。在Cargo.toml中导入这个
进口:
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实现功能正常,但反序列化实现存在生存期问题。
#[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的反序列化实现。我得到了这个错误。
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发布于 2022-07-04 17:55:01
正确答案:
impl <'de> Deserialize<'de> for Keys {
fn deserialize<D>(deserializer: &mut D) -> Result<Self, D::Error>
where D: Deserializer<'de>...https://stackoverflow.com/questions/72860321
复制相似问题