pub struct Len(pub usize);Expand description
Length context.
Used for providing an already read or in-memory length value
to a type that would otherwise read it from a Reader.
§Examples
struct Header {
data_len: u8,
}
struct Data {
header: Header,
data: Vec<u8>,
}
unsafe impl<C: Config> SchemaWrite<C> for Data {
type Src = Self;
fn size_of(src: &Self::Src) -> WriteResult<usize> {
Ok(1 + src.data.len())
}
fn write(mut writer: impl Writer, src: &Self::Src) -> WriteResult<()> {
writer.write(&[src.header.data_len])?;
writer.write(&src.data)?;
Ok(())
}
}
unsafe impl<'de, C: Config> SchemaRead<'de, C> for Data {
type Dst = Self;
fn read(
mut reader: impl Reader<'de>,
dst: &mut MaybeUninit<Self::Dst>,
) -> ReadResult<()> {
let len = reader.take_byte()?;
let data = <Vec<u8> as SchemaReadContext<C, _>>::get_with_context(
context::Len(len as usize),
reader
)?;
dst.write(Self {
header: Header { data_len: len },
data,
});
Ok(())
}
}
let data = Data {
header: Header { data_len: 8},
data: vec![0u8; 8],
};
let bytes = wincode::serialize(&data).unwrap();
let deserialized = wincode::deserialize(&bytes).unwrap();
assert_eq!(data, deserialized);Tuple Fields§
§0: usizeTrait Implementations§
impl Copy for Len
impl Eq for Len
Source§impl Ord for Len
impl Ord for Len
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
1.21.0 (const: unstable) · Source§fn min(self, other: Self) -> Selfwhere
Self: Sized,
fn min(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the minimum of two values. Read more
Source§impl PartialOrd for Len
impl PartialOrd for Len
Source§impl<'de, T, C: ConfigCore> SchemaReadContext<'de, C, Len> for Vec<T>where
T: SchemaRead<'de, C>,
Available on crate feature alloc only.
impl<'de, T, C: ConfigCore> SchemaReadContext<'de, C, Len> for Vec<T>where
T: SchemaRead<'de, C>,
Available on crate feature
alloc only.type Dst = Vec<<T as SchemaRead<'de, C>>::Dst>
Source§fn read_with_context(
ctx: Len,
reader: impl Reader<'de>,
dst: &mut MaybeUninit<Self::Dst>,
) -> ReadResult<()>
fn read_with_context( ctx: Len, reader: impl Reader<'de>, dst: &mut MaybeUninit<Self::Dst>, ) -> ReadResult<()>
Source§const TYPE_META: TypeMeta = TypeMeta::Dynamic
const TYPE_META: TypeMeta = TypeMeta::Dynamic
Metadata about the type’s serialization. Read more
Source§fn get_with_context(ctx: Ctx, reader: impl Reader<'de>) -> ReadResult<Self::Dst>
fn get_with_context(ctx: Ctx, reader: impl Reader<'de>) -> ReadResult<Self::Dst>
Read
Self::Dst from reader into a new Self::Dst with context.Source§impl<'de, C: ConfigCore> SchemaReadContext<'de, C, Len> for &'de str
impl<'de, C: ConfigCore> SchemaReadContext<'de, C, Len> for &'de str
type Dst = &'de str
Source§fn read_with_context(
context::Len: Len,
reader: impl Reader<'de>,
dst: &mut MaybeUninit<Self::Dst>,
) -> ReadResult<()>
fn read_with_context( context::Len: Len, reader: impl Reader<'de>, dst: &mut MaybeUninit<Self::Dst>, ) -> ReadResult<()>
Source§const TYPE_META: TypeMeta = TypeMeta::Dynamic
const TYPE_META: TypeMeta = TypeMeta::Dynamic
Metadata about the type’s serialization. Read more
Source§fn get_with_context(ctx: Ctx, reader: impl Reader<'de>) -> ReadResult<Self::Dst>
fn get_with_context(ctx: Ctx, reader: impl Reader<'de>) -> ReadResult<Self::Dst>
Read
Self::Dst from reader into a new Self::Dst with context.Source§impl<'de, C: Config> SchemaReadContext<'de, C, Len> for String
Available on crate feature alloc only.
impl<'de, C: Config> SchemaReadContext<'de, C, Len> for String
Available on crate feature
alloc only.type Dst = String
Source§fn read_with_context(
ctx: Len,
reader: impl Reader<'de>,
dst: &mut MaybeUninit<Self::Dst>,
) -> ReadResult<()>
fn read_with_context( ctx: Len, reader: impl Reader<'de>, dst: &mut MaybeUninit<Self::Dst>, ) -> ReadResult<()>
Source§const TYPE_META: TypeMeta = TypeMeta::Dynamic
const TYPE_META: TypeMeta = TypeMeta::Dynamic
Metadata about the type’s serialization. Read more
Source§fn get_with_context(ctx: Ctx, reader: impl Reader<'de>) -> ReadResult<Self::Dst>
fn get_with_context(ctx: Ctx, reader: impl Reader<'de>) -> ReadResult<Self::Dst>
Read
Self::Dst from reader into a new Self::Dst with context.Source§impl<'de, T, C: ConfigCore> SchemaReadContext<'de, C, Len> for &'de [T]where
T: SchemaRead<'de, C> + ZeroCopy<C>,
impl<'de, T, C: ConfigCore> SchemaReadContext<'de, C, Len> for &'de [T]where
T: SchemaRead<'de, C> + ZeroCopy<C>,
type Dst = &'de [<T as SchemaRead<'de, C>>::Dst]
Source§fn read_with_context(
context::Len: Len,
reader: impl Reader<'de>,
dst: &mut MaybeUninit<Self::Dst>,
) -> ReadResult<()>
fn read_with_context( context::Len: Len, reader: impl Reader<'de>, dst: &mut MaybeUninit<Self::Dst>, ) -> ReadResult<()>
Source§fn get_with_context(ctx: Ctx, reader: impl Reader<'de>) -> ReadResult<Self::Dst>
fn get_with_context(ctx: Ctx, reader: impl Reader<'de>) -> ReadResult<Self::Dst>
Read
Self::Dst from reader into a new Self::Dst with context.Source§impl<'de, T, C: ConfigCore> SchemaReadContext<'de, C, Len> for Cow<'de, [T]>
Available on crate feature alloc only.
impl<'de, T, C: ConfigCore> SchemaReadContext<'de, C, Len> for Cow<'de, [T]>
Available on crate feature
alloc only.type Dst = Cow<'de, [T]>
Source§fn read_with_context(
ctx: Len,
reader: impl Reader<'de>,
dst: &mut MaybeUninit<Self::Dst>,
) -> ReadResult<()>
fn read_with_context( ctx: Len, reader: impl Reader<'de>, dst: &mut MaybeUninit<Self::Dst>, ) -> ReadResult<()>
Source§const TYPE_META: TypeMeta = TypeMeta::Dynamic
const TYPE_META: TypeMeta = TypeMeta::Dynamic
Metadata about the type’s serialization. Read more
Source§fn get_with_context(ctx: Ctx, reader: impl Reader<'de>) -> ReadResult<Self::Dst>
fn get_with_context(ctx: Ctx, reader: impl Reader<'de>) -> ReadResult<Self::Dst>
Read
Self::Dst from reader into a new Self::Dst with context.impl StructuralPartialEq for Len
Auto Trait Implementations§
impl Freeze for Len
impl RefUnwindSafe for Len
impl Send for Len
impl Sync for Len
impl Unpin for Len
impl UnsafeUnpin for Len
impl UnwindSafe for Len
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more