Skip to main content

OptionView

Struct OptionView 

Source
pub struct OptionView<'a>(/* private fields */);
Expand description

Zero-copy view into a variable-length SD option in a buffer.

Wire layout:

  • [0..2]: length (u16 BE) = total_size - 3
  • [2]: option type (u8)
  • [3]: reserved/discard flag (u8)
  • [4..]: type-specific data

Implementations§

Source§

impl<'a> OptionView<'a>

Source

pub fn option_type(&self) -> Result<OptionType, Error>

Returns the option type.

§Errors

Returns Error::InvalidOptionType if the type byte is unrecognized.

Source

pub fn wire_size(&self) -> usize

Total wire size of this option (length field value + OPTION_LENGTH_SIZE_DELTA).

Source

pub fn as_ipv4(&self) -> Result<(Ipv4Addr, TransportProtocol, u16), Error>

Parse as IPv4 endpoint/multicast/SD option. Returns (ip, protocol, port).

§Errors

Returns Error::InvalidOptionTransportProtocol if the protocol byte is unrecognized. Views obtained via SdHeaderView::parse have already had their protocol byte validated, so this error cannot occur for those callers — it is retained only to keep the API usable if an OptionView is ever constructed outside the validated parse path.

Source

pub fn as_ipv6(&self) -> Result<(Ipv6Addr, TransportProtocol, u16), Error>

Parse as IPv6 endpoint/multicast/SD option. Returns (ip, protocol, port).

§Errors

Returns Error::InvalidOptionTransportProtocol if the protocol byte is unrecognized. Views obtained via SdHeaderView::parse have already had their protocol byte validated, so this error cannot occur for those callers — it is retained only to keep the API usable if an OptionView is ever constructed outside the validated parse path.

Source

pub fn configuration_bytes(&self) -> &'a [u8]

Raw configuration bytes (for Configuration options).

Source

pub fn as_load_balancing(&self) -> Result<(u16, u16), Error>

Parse as load-balancing option. Returns (priority, weight).

§Errors

Currently always succeeds; the Result return type is reserved for future validation.

Source

pub fn to_owned(&self) -> Result<Options, Error>

Converts this view into an owned Options.

§Errors

Returns an error if the option type is unrecognized, the transport protocol byte is invalid, or the configuration string exceeds MAX_CONFIGURATION_STRING_LENGTH.

§Panics

Panics if a configuration string passes the length check but fails to fit into the heapless buffer (unreachable in practice).

Trait Implementations§

Source§

impl<'a> Clone for OptionView<'a>

Source§

fn clone(&self) -> OptionView<'a>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Copy for OptionView<'a>

Source§

impl<'a> Debug for OptionView<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a> Decode<'a> for OptionView<'a>

Source§

fn decode(buf: &'a [u8]) -> Result<(Self, &'a [u8]), Self::Error>

Decode a single variable-length SD option from the front of buf.

The stride comes from the option’s 2-byte length field. This slices only; it does NOT validate the option type, per-type length, or transport-protocol byte. Validation is deferred to the accessors (option_type / as_ipv4 / to_owned) — the L2 validation pass — keeping this a lazy zero-copy view.

§Errors

Returns Incomplete if fewer than the fixed option header remains, or if the declared wire size exceeds the remaining bytes, and IncorrectOptionsSize if the declared wire size is smaller than the option header itself.

Source§

type Error = Error

Per-implementation error; constructible from Incomplete and TrailingBytes so the fixed-width leaf read helpers (read_u8, read_u16_be, read_array, …) and the decode_exact default lift through ?. Read more
Source§

fn decode_exact(buf: &'a [u8]) -> Result<Self, Self::Error>

Decode requiring the ENTIRE buffer to be consumed. Use this at a message boundary where the length is already known. Read more
Source§

impl<'a> DecodeIter<'a> for OptionView<'a>

Source§

fn decode_next(buf: &'a [u8]) -> Result<Option<(Self, &'a [u8])>, Self::Error>

Decode the next option, or Ok(None) at a clean end of buffer.

A partial/truncated trailing option after a good start is surfaced as an Err rather than silently dropped.

§Errors

Returns Incomplete if a partial option remains after a good start.

Source§

type Error = Error

Per-implementation error; constructible from Incomplete so the fixed-width leaf read helpers lift through ?. As with Decode::Error, the variable-width helpers return ReadUintError and need their own From impl.
Source§

const WIRE_SIZE: Option<usize> = None

Wire size of one element, when fixed at compile time (must be non-zero if Some). Enables DecodeIterator::remaining_len for fixed-stride record streams. Default: None (variable-width).
Source§

fn iter(buf: &'a [u8]) -> DecodeIterator<'a, Self>

Adapter: iterate all elements, yielding Result<Self, Self::Error>. Stops at the first Ok(None) or Err(_).

Auto Trait Implementations§

§

impl<'a> Freeze for OptionView<'a>

§

impl<'a> RefUnwindSafe for OptionView<'a>

§

impl<'a> Send for OptionView<'a>

§

impl<'a> Sync for OptionView<'a>

§

impl<'a> Unpin for OptionView<'a>

§

impl<'a> UnsafeUnpin for OptionView<'a>

§

impl<'a> UnwindSafe for OptionView<'a>

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more