Struct Probe
pub struct Probe<'a, 'b> { /* private fields */ }Expand description
A decoding probe to to look ahead what comes next.
A Probe derefs to Decoder and thus can be used like one without
affecting the decoder from which it was created.
Methods from Deref<Target = Decoder<'b>>§
pub fn decode_with<C, T>(&mut self, ctx: &mut C) -> Result<T, Error>where
T: Decode<'b, C>,
pub fn decode_with<C, T>(&mut self, ctx: &mut C) -> Result<T, Error>where
T: Decode<'b, C>,
Decode any type that implements Decode.
pub fn set_position(&mut self, pos: usize)
pub fn set_position(&mut self, pos: usize)
Set the current decode position.
pub fn probe<'a>(&'a mut self) -> Probe<'a, 'b>
pub fn probe<'a>(&'a mut self) -> Probe<'a, 'b>
Get a decoding probe to look ahead what is coming next.
This will not affect the decoding state of self and after the
returned Probe has been dropped, decoding can continue from
its current position as if probe was never called.
pub fn int(&mut self) -> Result<Int, Error>
pub fn int(&mut self) -> Result<Int, Error>
Decode a CBOR integer.
See Int for details regarding the value range of CBOR integers.
pub fn f16(&mut self) -> Result<f32, Error>
pub fn f16(&mut self) -> Result<f32, Error>
Decode a half float (f16) and return it in an f32.
Only available when the feature half is present.
pub fn bytes(&mut self) -> Result<&'b [u8], Error>
pub fn bytes(&mut self) -> Result<&'b [u8], Error>
Decode a byte slice.
This only decodes byte slices of definite lengths.
See Decoder::bytes_iter for indefinite byte slice support.
pub fn bytes_iter(&mut self) -> Result<BytesIter<'_, 'b>, Error>
pub fn bytes_iter(&mut self) -> Result<BytesIter<'_, 'b>, Error>
Iterate over byte slices.
This supports indefinite byte slices by returing a byte slice on each iterator step. If a single definite slice is decoded the iterator will only yield one item.
pub fn str(&mut self) -> Result<&'b str, Error>
pub fn str(&mut self) -> Result<&'b str, Error>
Decode a string slice.
This only decodes string slices of definite lengths.
See Decoder::str_iter for indefinite string slice support.
pub fn str_iter(&mut self) -> Result<StrIter<'_, 'b>, Error>
pub fn str_iter(&mut self) -> Result<StrIter<'_, 'b>, Error>
Iterate over string slices.
This supports indefinite string slices by returing a string slice on each iterator step. If a single definite slice is decoded the iterator will only yield one item.
pub fn array(&mut self) -> Result<Option<u64>, Error>
pub fn array(&mut self) -> Result<Option<u64>, Error>
Begin decoding an array.
CBOR arrays are heterogenous collections and may be of indefinite
length. If the length is known it is returned as a Some, for
indefinite arrays a None is returned.
pub fn array_iter<T>(&mut self) -> Result<ArrayIter<'_, 'b, T>, Error>
pub fn array_iter<T>(&mut self) -> Result<ArrayIter<'_, 'b, T>, Error>
Iterate over all array elements.
This supports indefinite and definite length arrays and uses the
Decode trait to decode each element. Consequently only
homogenous arrays are supported by this method.
pub fn array_iter_with<'a, C, T>(
&'a mut self,
ctx: &'a mut C,
) -> Result<ArrayIterWithCtx<'a, 'b, C, T>, Error>where
T: Decode<'b, C>,
pub fn array_iter_with<'a, C, T>(
&'a mut self,
ctx: &'a mut C,
) -> Result<ArrayIterWithCtx<'a, 'b, C, T>, Error>where
T: Decode<'b, C>,
Iterate over all array elements.
This supports indefinite and definite length arrays and uses the
Decode trait to decode each element. Consequently only
homogenous arrays are supported by this method.
pub fn map(&mut self) -> Result<Option<u64>, Error>
pub fn map(&mut self) -> Result<Option<u64>, Error>
Begin decoding a map.
CBOR maps are heterogenous collections (both in keys and in values)
and may be of indefinite length. If the length is known it is returned
as a Some, for indefinite maps a None is returned.
pub fn map_iter<K, V>(&mut self) -> Result<MapIter<'_, 'b, K, V>, Error>
pub fn map_iter<K, V>(&mut self) -> Result<MapIter<'_, 'b, K, V>, Error>
Iterate over all map entries.
This supports indefinite and definite length maps and uses the
Decode trait to decode each key and value. Consequently only
homogenous maps are supported by this method.
pub fn map_iter_with<'a, C, K, V>(
&'a mut self,
ctx: &'a mut C,
) -> Result<MapIterWithCtx<'a, 'b, C, K, V>, Error>
pub fn map_iter_with<'a, C, K, V>( &'a mut self, ctx: &'a mut C, ) -> Result<MapIterWithCtx<'a, 'b, C, K, V>, Error>
Iterate over all map entries.
This supports indefinite and definite length maps and uses the
Decode trait to decode each key and value. Consequently only
homogenous maps are supported by this method.
Trait Implementations§
Auto Trait Implementations§
impl<'a, 'b> Freeze for Probe<'a, 'b>
impl<'a, 'b> RefUnwindSafe for Probe<'a, 'b>
impl<'a, 'b> Send for Probe<'a, 'b>
impl<'a, 'b> Sync for Probe<'a, 'b>
impl<'a, 'b> Unpin for Probe<'a, 'b>
impl<'a, 'b> !UnwindSafe for Probe<'a, 'b>
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
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.