Не могу сделать базовый пример работы Serde Serialize - PullRequest
1 голос
/ 23 июня 2019

Документация Serde гласит:

Все они могут быть сериализованы с использованием Serde из коробки.

serde_json только для примера, вообще не требуется.

Это именно то, что мне нужно, базовая сериализация структуры в некоторый базовый двоичный формат.Мне не нужен формат JSON, я хочу, чтобы он был простым, чтобы можно было сохранять структуру в файле или отправлять ее в сеть.В документации неясно, как использовать serde для базовой (бинарной или стандартной) сериализации, она показывает только пример с JSON, но это не то, что я ищу.Я также не хочу реализовывать свой собственный метод serialize, я хочу использовать методы по умолчанию, которые предоставляет Serde.

Это мой пример, так как мне заставить его работать?

use serde::{Serialize, Deserialize,Serializer};

#[derive(Serialize, Deserialize, Debug)]
struct Point {
    x: i32,
    y: i32,
}

fn main() {
    let point = Point { x: 1, y: 2 };

    //let serialized = serde::serialize(&point).unwrap(); // <-- doesnt work!
    //let serialized = Serializer::serialize(&point); // <-- doesnt work!
    //let serialized = point.serialize(Serializer); // <-- doesn't work!
    println!("data = {:?}", serialized);
}

Детская площадка: https://play.rust -lang.org /? Версия = стабильная и режим = отладка и выпуск = 2018 & gist = b57a77399280f19664bb004201319b32

Это моя строка зависимости:

[dependencies]
serde = { version = "1.0", features = ["derive"] }

1 Ответ

2 голосов
/ 24 июня 2019

Как отмечается в комментариях, формат "по умолчанию" не предусмотрен.

Вы должны выбрать желаемый двоичный формат и включить его в качестве дополнительной зависимости, как если бы вы использовали serde_json.

Список форматов https://serde.rs/#data-formats.. Из них serde_json - единственный пакет, размещенный в https://github.com/serde-rs,, все двоичные форматы являются «сторонними». Перекрестная ссылка на него с списком ящиков с тегом «serde», отсортированным по последним загрузкам , CBOR ящик кажется популярным.

...