pub struct CopyableBytesDecoder<B> { /* private fields */ }Expand description
A variant of BytesDecoder for copyable bytes types.
Unlike BytesDecoder, this has no restriction on decoding count.
§Examples
use bytecodec::{Decode, Eos};
use bytecodec::bytes::CopyableBytesDecoder;
let mut decoder = CopyableBytesDecoder::new([0; 3]);
let mut input = b"foobar";
// Decodes first item
assert_eq!(decoder.requiring_bytes().to_u64(), Some(3));
decoder.decode(&input[0..3], Eos::new(false)).unwrap();
assert_eq!(decoder.is_idle(), true);
assert_eq!(decoder.finish_decoding().unwrap(), *b"foo");
// Decodes second item
assert_eq!(decoder.requiring_bytes().to_u64(), Some(3));
decoder.decode(&input[3..5], Eos::new(false)).unwrap();
assert_eq!(decoder.is_idle(), false);
assert_eq!(decoder.requiring_bytes().to_u64(), Some(1));
decoder.decode(&input[5..], Eos::new(true)).unwrap();
assert_eq!(decoder.is_idle(), true);
assert_eq!(decoder.finish_decoding().unwrap(), *b"bar");Implementations§
Source§impl<B> CopyableBytesDecoder<B>
impl<B> CopyableBytesDecoder<B>
Sourcepub fn into_inner(self) -> B
pub fn into_inner(self) -> B
Takes ownership of this instance and returns the inner bytes.
Trait Implementations§
Source§impl<B: Debug> Debug for CopyableBytesDecoder<B>
impl<B: Debug> Debug for CopyableBytesDecoder<B>
Source§impl<B: AsRef<[u8]> + AsMut<[u8]> + Copy> Decode for CopyableBytesDecoder<B>
impl<B: AsRef<[u8]> + AsMut<[u8]> + Copy> Decode for CopyableBytesDecoder<B>
Source§fn decode(&mut self, buf: &[u8], eos: Eos) -> Result<usize>
fn decode(&mut self, buf: &[u8], eos: Eos) -> Result<usize>
Consumes the given buffer (a part of a byte sequence), and proceeds the decoding process. Read more
Source§fn finish_decoding(&mut self) -> Result<Self::Item>
fn finish_decoding(&mut self) -> Result<Self::Item>
Finishes the current decoding process and returns the decoded item. Read more
Source§fn requiring_bytes(&self) -> ByteCount
fn requiring_bytes(&self) -> ByteCount
Returns the lower bound of the number of bytes needed to decode the next item. Read more
Source§impl<B: Default> Default for CopyableBytesDecoder<B>
impl<B: Default> Default for CopyableBytesDecoder<B>
Source§fn default() -> CopyableBytesDecoder<B>
fn default() -> CopyableBytesDecoder<B>
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl<B> Freeze for CopyableBytesDecoder<B>where
B: Freeze,
impl<B> RefUnwindSafe for CopyableBytesDecoder<B>where
B: RefUnwindSafe,
impl<B> Send for CopyableBytesDecoder<B>where
B: Send,
impl<B> Sync for CopyableBytesDecoder<B>where
B: Sync,
impl<B> Unpin for CopyableBytesDecoder<B>where
B: Unpin,
impl<B> UnwindSafe for CopyableBytesDecoder<B>where
B: UnwindSafe,
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
Source§impl<T> DecodeExt for Twhere
T: Decode,
impl<T> DecodeExt for Twhere
T: Decode,
Source§fn map<T, F>(self, f: F) -> Map<Self, T, F>
fn map<T, F>(self, f: F) -> Map<Self, T, F>
Creates a decoder that converts decoded values by calling the given function. Read more
Source§fn try_map<T, E, F>(self, f: F) -> TryMap<Self, T, E, F>
fn try_map<T, E, F>(self, f: F) -> TryMap<Self, T, E, F>
Creates a decoder that tries to convert decoded values by calling the given function. Read more
Source§fn map_err<E, F>(self, f: F) -> MapErr<Self, E, F>
fn map_err<E, F>(self, f: F) -> MapErr<Self, E, F>
Creates a decoder for modifying decoding errors produced by
self. Read moreSource§fn and_then<D, F>(self, f: F) -> AndThen<Self, D, F>
fn and_then<D, F>(self, f: F) -> AndThen<Self, D, F>
Creates a decoder that enables conditional decoding. Read more
Source§fn collect<T>(self) -> Collect<Self, T>
fn collect<T>(self) -> Collect<Self, T>
Creates a decoder for collecting decoded items. Read more
Source§fn length(self, expected_bytes: u64) -> Length<Self>
fn length(self, expected_bytes: u64) -> Length<Self>
Creates a decoder that consumes the specified number of bytes exactly. Read more
Source§fn omit(self, do_omit: bool) -> Omittable<Self>
fn omit(self, do_omit: bool) -> Omittable<Self>
Creates a decoder that will omit decoding items if
do_omit = true is specified. Read moreSource§fn max_bytes(self, bytes: u64) -> MaxBytes<Self>
fn max_bytes(self, bytes: u64) -> MaxBytes<Self>
Creates a decoder that will fail if the number of consumed bytes exceeds
bytes. Read moreSource§fn chain<T: Decode>(self, other: T) -> TupleDecoder<(Self, T)>
fn chain<T: Decode>(self, other: T) -> TupleDecoder<(Self, T)>
Takes two decoders and creates a new decoder that decodes both items in sequence. Read more
Source§fn slice(self) -> Slice<Self>
fn slice(self) -> Slice<Self>
Creates a decoder that makes it possible to slice the input byte sequence in arbitrary units. Read more
Source§fn peekable(self) -> Peekable<Self>
fn peekable(self) -> Peekable<Self>
Creates a decoder that enables to peek decoded items before calling
finish_decoding method. Read more