Crate xdr_codec

Source
Expand description

XDR runtime encoding/decoding

This crate provides runtime support for encoding and decoding XDR data. It is intended to be used with code generated by the “xdrgen” crate, but it can also be used with hand-written code.

It provides two key traits - Pack and Unpack - which all encodable types must implement. It also provides the helper functions pack() and unpack() to simplify the API.

By default, this does not implement codecs for i8 or u8. This is because encoding individual bytes is quite inefficient, as they’re all padded up to 32 bits (4 bytes). This doesn’t matter for individual items, but arrays of bytes should be represented by opaque arrays (static size) or flex arrays (dynamic size) (or strings for character data).

However, some protocols are mis-specified to use byte arrays (I’m looking at you, gluster), so the option to support the exists. You can enable byte codec with the bytecodec feature.

Modules§

record
XDR record marking

Structs§

Error
The Error type.
Opaque
Wrapper for XDR opaque data.

Enums§

ErrorKind
The kind of an error.

Traits§

Pack
Basic packing trait.
Read
The Read trait allows for reading bytes from a source.
ResultExt
Additional methods for Result, for easy interaction with this crate.
Unpack
Basic unpacking trait
Write
A trait for objects which are byte-oriented sinks.

Functions§

pack
Serialization (packing) helper.
pack_array
Pack a fixed-size array.
pack_flex
Pack a dynamically sized array, with size limit check.
pack_opaque_array
Pack a fixed-size byte array
pack_opaque_flex
Pack a dynamically sized opaque array, with size limit check.
pack_string
Pack a string with size limit check.
padding
Compute XDR padding.
unpack
Deserialization (unpacking) helper function
unpack_array
Unpack a fixed-sized array
unpack_flex
Unpack a (perhaps) length-limited array
unpack_opaque_array
Unpack a fixed-sized opaque array
unpack_opaque_flex
Unpack a (perhaps) length-limited opaque array
unpack_string
Unpack (perhaps) length-limited string

Type Aliases§

Result
Convenient wrapper around std::Result.