pub trait Parcel: Sized {
const TYPE_NAME: &'static str;
fn read_field(
read: &mut dyn Read,
settings: &Settings,
hints: &mut Hints
) -> Result<Self, Error>;
fn write_field(
&self,
write: &mut dyn Write,
settings: &Settings,
hints: &mut Hints
) -> Result<(), Error>;
fn read(read: &mut dyn Read, settings: &Settings) -> Result<Self, Error> { ... }
fn write(
&self,
write: &mut dyn Write,
settings: &Settings
) -> Result<(), Error> { ... }
fn into_stream(self, settings: &Settings) -> Result<Cursor<Vec<u8>>, Error> { ... }
fn from_raw_bytes(bytes: &[u8], settings: &Settings) -> Result<Self, Error> { ... }
fn field_from_raw_bytes(
bytes: &[u8],
settings: &Settings,
hints: &mut Hints
) -> Result<Self, Error> { ... }
fn raw_bytes(&self, settings: &Settings) -> Result<Vec<u8>, Error> { ... }
fn raw_bytes_field(
&self,
settings: &Settings,
hints: &mut Hints
) -> Result<Vec<u8>, Error> { ... }
fn type_name(&self) -> &'static str { ... }
}
Expand description
A value which can be read and written.
All of the expected standard Rust types implement this.
Types that implement Parcel
include (not exhaustive):
- The Rust primitive types
u8
,i8
,u16
,i16
…u64
bool
,char
f32
,f64
- Tuples
(T1) where T1: Parcel
(T1, T2) where T1: Parcel, T2: Parcel
(T1, T2, ... Tn) where T1: Parcel, T2: Parcel, ... Tn: Parcel
- Arrays
[T; 0] where T: Parcel
[T; 1] where T: Parcel
[T; 2] where T: Parcel
[T; 32] where T: Parcel
[T; 40] where T: Parcel
[T; 42] where T: Parcel
- …
[T; 64] where T: Parcel
- …
[T; 1024] where T: Parcel
String
Option<T: Parcel>
Box<T: Parcel>
std::ops::Range<T: Parcel>
- Smart pointers
std::rc::Rc
std::sync::Arc
std::collections
Vec<T: Parcel>
VecDeque<T: Parcel>
HashMap<T: Parcel>
BTreeMap<T: Parcel>
Required Associated Constants
Required Methods
Reads a value from a stream.
Parameters:
hints
- a list of hints accessible by the current parcel chain only.
Blocks until a value is received.
Provided Methods
Reads a new item with a fresh set of hints.
Blocks until a value is received.
Writes a value to a stream.
Convers the value into a byte stream that implements std::io::Read
.
Parses a new value from its raw byte representation.
Returns Err
if the bytes represent an invalid value.
Parses a new value from its raw byte representation.
Returns Err
if the bytes represent an invalid value.
Gets the raw byte representation of the value.
Gets the raw bytes of this type as a field of a larger type.