coap_message_utils::option_value

Struct Block2RequestData

Source
pub struct Block2RequestData(/* private fields */);
Expand description

Request data from a Block2 request

As the M flag is unused in requests, it is not captured in here (and ignored at construction).

Implementations§

Source§

impl Block2RequestData

Source

pub fn from_message( message: &impl ReadableMessage, ) -> Result<Self, BadBlock2Option>

Extract a request block 2 value from a request message.

Absence of the option is not an error and results in the default value to be returned; exceeding length or duplicate entries are an error and are indicated by returning an error, which should be responded to with a Bad Option error.

Source

pub fn from_option(option: &impl MessageOption) -> Result<Self, BadBlock2Option>

Extract a request block 2 value from a single option. An error is indicated on a malformed (ie. overly long) option.

Compared to Block2RequestData::from_message(), this can easily be packed into a single loop that processes all options and fails on unknown critical ones; on the other hand, this does not automate the check for duplicate options.

§Panics

In debug mode if the option is not Block2

Source

pub fn to_option_value(&self, more: bool) -> u32

Source

pub fn size(&self) -> u16

Size of a single block

Source

pub fn start(&self) -> usize

Number of bytes before the indicated block

Source

pub fn shrink(self, size: u16) -> Option<Self>

Return a block that has identical .start(), but a block size smaller or equal to the given one.

Returns None if the given size is not expressible as a CoAP block (ie. is less than 16).

Trait Implementations§

Source§

impl Default for Block2RequestData

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl TryFromOption for Block2RequestData

Source§

fn try_from(value: &impl MessageOption) -> Option<Self>

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 8 bytes