Я пытаюсь сериализовать PublicKey
структуру оксида натрия (привязки Rust для libsodium) в файл (например, JSON, но двоичный код тоже подойдет).
Вот мой код:
extern crate serde;
extern crate serde_json;
extern crate sodiumoxide;
use serde::Serialize;
use serde_json::ser::Serializer;
use sodiumoxide::crypto::sign;
fn main() {
let (pk, _) = sign::gen_keypair();
let pk_ser = serde_json::to_string(&pk);
}
Я получаю следующее сообщение об ошибке:
error: the trait bound `sodiumoxide::crypto::sign::PublicKey: serde::Serialize` is not satisfied [E0277]
Итак, компилятор сообщает мне, что PublicKey
должен реализовать трейт serde :: Serialize. Но он реализует serde::Serialize
, как указано здесь: https://dnaq.github.io/sodiumoxide/sodiumoxide/crypto/sign/ed25519/struct.PublicKey.html
Так в чем проблема?
Редактировать:
Cargo.toml:
[package]
name = ...
version = ...
authors = ...
[dependencies]
serde = "*"
serde_json = "*"
sodiumoxide = "*"