[][src]Struct serde_pod::ser::Serializer

pub struct Serializer<BO, W> { /* fields omitted */ }

Структура для сериализации значений Rust в простой поток байт. Внедрение разделителей и любой другой метаинформации для десериализации остается заботой вызывающего кода.

Правила сериализации

Все типы сериализуются максимально близко к тому, как они лежат в памяти: все целые типы записываются согласно их разрядности (отраженной в названии типа), используя порядок байт BO.

Для структур и кортежей рекурсивно сериализуются их поля, без разделителей между ними. Если такие разделители требуются, они должны быть внедрены непосредственно в структуру или кортеж.

Тип (), None-вариант Option, а также unit-вариант перечисления никак не записываются в поток, писатель должен самостоятельно позаботится о сохранении информации об их наличии. Например, для записи С-like перечислений он может использовать вместо enum-поля в структуре поле одного из примитивных типов.

bool-значения сериализуются, как 1 байт со значением 0 или 1.

Newtype типы сериализуются, как оборачиваемое ими значение. При необходимости сохранить маркер типа вызывающий код должен сделать это самостоятельно, например, сериализуя вместо Newtype типа структуру с двумя полями -- маркером типа и значением.

Сериализация строковых срезов выполняется записью в поток UTF-8 кодированного значения, которая является нативной для Rust и таким образом ведет за собой нулевые накладные расходы на сериализацию. Записываются только байты самой строки, нулевого байта или длины строки никуда не добавляется. В случае, если требуется записывать строки в других кодировках, оберните их в структуры, для которых будет реализован типаж Serialize, выполняющий сохранение данных в требуемой кодировке, например, с помощью крейта encoding.

Отдельные символы записываются, как строки из одного символа, в UTF-8. Также как и для строк, нулевой байт в конце символа не записывается.

Сериализация последовательностей и их срезов осуществляется простой последовательной сериализацией их элементов. Ни количество, ни разделители между элементами, ни какой-либо маркер конца последовательности не записываются. В случае, если они требуются для корректной десериализации, они должны быть добавлены в сериализуемые структуры вручную.

Key-value типы сериализуются, как последовательность структур ключ-значение по уже описанным выше правилам. Порядок таких пар определяется сериализуемой структурой.

Параметры типа

  • BO: определяет порядок байт, в котором будут записаны примитивные числовые типы: u16, u32, u64, u128, i16, i32, i64, i128, f32 и f64.
  • W: определяет тип, обеспечивающих сохранение сериализуемых данных в хранилище

Methods

impl<BO, W> Serializer<BO, W> where
    W: Write,
    BO: ByteOrder
[src]

pub fn new(writer: W) -> Self[src]

Создает сериализатор с настройками по умолчанию. Строки кодируются в UTF-8, если встречается непредставимый символ, кодирование прерывается и возвращается ошибка

Параметры

  • writer: Поток, в который записывать сериализуемые данные

Возвращаемое значение

Сериализатор для записи данных в указанный поток и кодированием строк в UTF-8

Trait Implementations

impl<'a, BO, W> SerializeMap for &'a mut Serializer<BO, W> where
    W: Write,
    BO: ByteOrder
[src]

type Ok = ()

Must match the Ok type of our Serializer.

type Error = Error

Must match the Error type of our Serializer.

fn serialize_key<T: ?Sized>(&mut self, key: &T) -> Result<Self::Ok> where
    T: Serialize
[src]

Записывает в выходной поток представление key с помощью данного сериализатора

fn serialize_value<T: ?Sized>(&mut self, value: &T) -> Result<Self::Ok> where
    T: Serialize
[src]

Записывает в выходной поток представление value с помощью данного сериализатора

fn end(self) -> Result<Self::Ok>[src]

Ничего не записывает в поток

impl<'a, BO, W> SerializeSeq for &'a mut Serializer<BO, W> where
    W: Write,
    BO: ByteOrder
[src]

type Ok = ()

Must match the Ok type of our Serializer.

type Error = Error

Must match the Error type of our Serializer.

fn serialize_element<T: ?Sized>(&mut self, value: &T) -> Result<Self::Ok> where
    T: Serialize
[src]

Записывает в выходной поток представление value с помощью данного сериализатора

fn end(self) -> Result<Self::Ok>[src]

Ничего не записывает в поток

impl<'a, BO, W> SerializeStruct for &'a mut Serializer<BO, W> where
    W: Write,
    BO: ByteOrder
[src]

type Ok = ()

Must match the Ok type of our Serializer.

type Error = Error

Must match the Error type of our Serializer.

fn serialize_field<T: ?Sized>(
    &mut self,
    _key: &'static str,
    value: &T
) -> Result<Self::Ok> where
    T: Serialize
[src]

Записывает в выходной поток представление value с помощью данного сериализатора

fn end(self) -> Result<Self::Ok>[src]

Ничего не записывает в поток

impl<'a, BO, W> SerializeStructVariant for &'a mut Serializer<BO, W> where
    W: Write,
    BO: ByteOrder
[src]

type Ok = ()

Must match the Ok type of our Serializer.

type Error = Error

Must match the Error type of our Serializer.

fn serialize_field<T: ?Sized>(
    &mut self,
    _key: &'static str,
    value: &T
) -> Result<Self::Ok> where
    T: Serialize
[src]

Записывает в выходной поток представление value с помощью данного сериализатора

fn end(self) -> Result<Self::Ok>[src]

Ничего не записывает в поток

impl<'a, BO, W> SerializeTuple for &'a mut Serializer<BO, W> where
    W: Write,
    BO: ByteOrder
[src]

type Ok = ()

Must match the Ok type of our Serializer.

type Error = Error

Must match the Error type of our Serializer.

fn serialize_element<T: ?Sized>(&mut self, value: &T) -> Result<Self::Ok> where
    T: Serialize
[src]

Записывает в выходной поток представление value с помощью данного сериализатора

fn end(self) -> Result<Self::Ok>[src]

Ничего не записывает в поток

impl<'a, BO, W> SerializeTupleStruct for &'a mut Serializer<BO, W> where
    W: Write,
    BO: ByteOrder
[src]

type Ok = ()

Must match the Ok type of our Serializer.

type Error = Error

Must match the Error type of our Serializer.

fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<Self::Ok> where
    T: Serialize
[src]

Записывает в выходной поток представление value с помощью данного сериализатора

fn end(self) -> Result<Self::Ok>[src]

Ничего не записывает в поток

impl<'a, BO, W> SerializeTupleVariant for &'a mut Serializer<BO, W> where
    W: Write,
    BO: ByteOrder
[src]

type Ok = ()

Must match the Ok type of our Serializer.

type Error = Error

Must match the Error type of our Serializer.

fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<Self::Ok> where
    T: Serialize
[src]

Записывает в выходной поток представление value с помощью данного сериализатора

fn end(self) -> Result<Self::Ok>[src]

Ничего не записывает в поток

impl<'a, BO, W> Serializer for &'a mut Serializer<BO, W> where
    W: Write,
    BO: ByteOrder
[src]

type Ok = ()

The output type produced by this Serializer during successful serialization. Most serializers that produce text or binary output should set Ok = () and serialize into an [io::Write] or buffer contained within the Serializer instance. Serializers that build in-memory data structures may be simplified by using Ok to propagate the data structure around. Read more

type Error = Error

The error type when some error occurs during serialization.

type SerializeSeq = Self

Type returned from [serialize_seq] for serializing the content of the sequence. Read more

type SerializeTuple = Self

Type returned from [serialize_tuple] for serializing the content of the tuple. Read more

type SerializeTupleStruct = Self

Type returned from [serialize_tuple_struct] for serializing the content of the tuple struct. Read more

type SerializeTupleVariant = Self

Type returned from [serialize_tuple_variant] for serializing the content of the tuple variant. Read more

type SerializeMap = Self

Type returned from [serialize_map] for serializing the content of the map. Read more

type SerializeStruct = Self

Type returned from [serialize_struct] for serializing the content of the struct. Read more

type SerializeStructVariant = Self

Type returned from [serialize_struct_variant] for serializing the content of the struct variant. Read more

fn serialize_i8(self, v: i8) -> Result<Self::Ok>[src]

Записывает в выходной поток 1 байт

fn serialize_u8(self, v: u8) -> Result<Self::Ok>[src]

Записывает в выходной поток 1 байт

fn serialize_i16(self, v: i16) -> Result<Self::Ok>[src]

Записывает в выходной поток 2 байта в указанном в сериализаторе порядке байт

fn serialize_u16(self, v: u16) -> Result<Self::Ok>[src]

Записывает в выходной поток 2 байта в указанном в сериализаторе порядке байт

fn serialize_i32(self, v: i32) -> Result<Self::Ok>[src]

Записывает в выходной поток 4 байта в указанном в сериализаторе порядке байт

fn serialize_u32(self, v: u32) -> Result<Self::Ok>[src]

Записывает в выходной поток 4 байта в указанном в сериализаторе порядке байт

fn serialize_i64(self, v: i64) -> Result<Self::Ok>[src]

Записывает в выходной поток 8 байт в указанном в сериализаторе порядке байт

fn serialize_u64(self, v: u64) -> Result<Self::Ok>[src]

Записывает в выходной поток 8 байт в указанном в сериализаторе порядке байт

fn serialize_i128(self, v: i128) -> Result<Self::Ok>[src]

Записывает в выходной поток 16 байт в указанном в сериализаторе порядке байт

fn serialize_u128(self, v: u128) -> Result<Self::Ok>[src]

Записывает в выходной поток 16 байт в указанном в сериализаторе порядке байт

fn serialize_f32(self, v: f32) -> Result<Self::Ok>[src]

Записывает в выходной поток 4 байта в указанном в сериализаторе порядке байт

fn serialize_f64(self, v: f64) -> Result<Self::Ok>[src]

Записывает в выходной поток 8 байт в указанном в сериализаторе порядке байт

fn serialize_bool(self, v: bool) -> Result<Self::Ok>[src]

Записывает в выходной поток 1 байт: 0x00 для false и 0x01 для true

fn serialize_char(self, v: char) -> Result<Self::Ok>[src]

Записывает в выходной поток UTF-8 байты представления указанного символа

fn serialize_str(self, v: &str) -> Result<Self::Ok>[src]

Записывает в выходной поток UTF-8 байты представления указанной строки

fn serialize_bytes(self, v: &[u8]) -> Result<Self::Ok>[src]

Записывает в выходной поток байты указанного массива как есть

fn serialize_none(self) -> Result<Self::Ok>[src]

Ничего не записывает в поток

fn serialize_some<T: ?Sized>(self, value: &T) -> Result<Self::Ok> where
    T: Serialize
[src]

Записывает в выходной поток представление value с помощью данного сериализатора

fn serialize_unit(self) -> Result<Self::Ok>[src]

Ничего не записывает в поток

fn serialize_unit_struct(self, _name: &'static str) -> Result<Self::Ok>[src]

Ничего не записывает в поток

fn serialize_unit_variant(
    self,
    _name: &'static str,
    _variant_index: u32,
    _variant: &'static str
) -> Result<Self::Ok>
[src]

Ничего не записывает в поток

fn serialize_newtype_struct<T: ?Sized>(
    self,
    _name: &'static str,
    value: &T
) -> Result<Self::Ok> where
    T: Serialize
[src]

Записывает в выходной поток представление value с помощью данного сериализатора

fn serialize_newtype_variant<T: ?Sized>(
    self,
    _name: &'static str,
    _variant_index: u32,
    _variant: &'static str,
    value: &T
) -> Result<Self::Ok> where
    T: Serialize
[src]

Записывает в выходной поток представление value с помощью данного сериализатора. Остальные параметры игнорируются

fn serialize_seq(self, _len: Option<usize>) -> Result<Self::SerializeSeq>[src]

Просто возвращает данный сериализатор. Параметр _len игнорируется

fn serialize_tuple(self, _len: usize) -> Result<Self::SerializeTuple>[src]

Просто возвращает данный сериализатор. Параметр _len игнорируется

fn serialize_tuple_struct(
    self,
    _name: &'static str,
    _len: usize
) -> Result<Self::SerializeTupleStruct>
[src]

Просто возвращает данный сериализатор. Все параметры игнорируются

fn serialize_tuple_variant(
    self,
    _name: &'static str,
    _variant_index: u32,
    _variant: &'static str,
    _len: usize
) -> Result<Self::SerializeTupleVariant>
[src]

Просто возвращает данный сериализатор. Все параметры игнорируются

fn serialize_map(self, _len: Option<usize>) -> Result<Self::SerializeMap>[src]

Просто возвращает данный сериализатор. Параметр _len игнорируется

fn serialize_struct(
    self,
    _name: &'static str,
    _len: usize
) -> Result<Self::SerializeStruct>
[src]

Просто возвращает данный сериализатор. Все параметры игнорируются

fn serialize_struct_variant(
    self,
    _name: &'static str,
    _variant_index: u32,
    _variant: &'static str,
    _len: usize
) -> Result<Self::SerializeStructVariant>
[src]

Просто возвращает данный сериализатор. Все параметры игнорируются

fn is_human_readable(&self) -> bool[src]

Возвращает false

Auto Trait Implementations

impl<BO, W> RefUnwindSafe for Serializer<BO, W> where
    BO: RefUnwindSafe,
    W: RefUnwindSafe

impl<BO, W> Send for Serializer<BO, W> where
    BO: Send,
    W: Send

impl<BO, W> Sync for Serializer<BO, W> where
    BO: Sync,
    W: Sync

impl<BO, W> Unpin for Serializer<BO, W> where
    BO: Unpin,
    W: Unpin

impl<BO, W> UnwindSafe for Serializer<BO, W> where
    BO: UnwindSafe,
    W: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.