[][src]Crate serde_pod

Реализует простую сериализацию и десериализацию структур, наиболее близкую к их представлению в памяти.

Пример

Читаем заголовок GFF файла (формат Bioware, используемый для хранения данных в таких играх, как Neverwinter Nights, Neverwinter Nights 2 и Ведьмак):

#[derive(Debug, Deserialize, PartialEq)]
struct Signature([u8; 4]);

#[derive(Debug, Deserialize, PartialEq)]
struct Version([u8; 4]);

#[derive(Debug, Deserialize, PartialEq)]
struct Section {
  offset: u32,
  count: u32,
}
#[derive(Debug, Deserialize, PartialEq)]
struct GffHeader {
  signature:     Signature,
  version:       Version,
  structs:       Section,
  fields:        Section,
  labels:        Section,
  field_data:    Section,
  field_indices: Section,
  list_indices:  Section,
}

let header: GffHeader = from_bytes::<byteorder::LE, _>(&[
  // Signature
  0x47, 0x55, 0x49, 0x20,
  // Version
  0x56, 0x33, 0x2E, 0x32,
  // structs
  0x38, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00,
  // fields
  0xEC, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00,
  // labels
  0xD0, 0x07, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00,
  // field_data
  0x70, 0x09, 0x00, 0x00, 0x1D, 0x02, 0x00, 0x00,
  // field_indices
  0x8D, 0x0B, 0x00, 0x00, 0x4C, 0x02, 0x00, 0x00,
  // list_indices
  0xD9, 0x0D, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
])?;

assert_eq!(header, GffHeader {
  signature:     Signature(*b"GUI "),
  version:       Version(*b"V3.2"),
  structs:       Section { offset:   0x38, count:  15 },
  fields:        Section { offset:   0xEC, count: 147 },
  labels:        Section { offset: 0x07D0, count:  26 },
  field_data:    Section { offset: 0x0970, count: 541 },
  field_indices: Section { offset: 0x0B8D, count: 588 },
  list_indices:  Section { offset: 0x0DD9, count:  36 },
});

Re-exports

pub use error::Error;
pub use error::Result;
pub use ser::to_vec;
pub use ser::to_writer;
pub use de::from_bytes;

Modules

de

Содержит тип, реализующий простую десериализацию данных, как POD типов.

error

Содержит тип ошибки и результата, описывающие неуспешный результат сериализации или десериализации.

ser

Содержит тип, реализующий простую сериализацию данных, как POD типов.

Type Definitions

BEDeserializer

Десериализатор, читающий числа из потока в порядке Big-Endian

BESerializer

Сериализатор, записывающий числа в поток в порядке Big-Endian

LEDeserializer

Десериализатор, читающий числа из потока в порядке Little-Endian

LESerializer

Сериализатор, записывающий числа в поток в порядке Little-Endian