Skip to main content

InvReqBuilder

Struct InvReqBuilder 

Source
pub struct InvReqBuilder<P, const F: usize = 0> { /* private fields */ }
Expand description

Streaming builder for an InvokeRequestMessage. Type-state-tagged so the compiler enforces in-order field writes.

All three top-level fields (SuppressResponse, TimedRequest, InvokeRequests) are mandatory on the wire per Matter Core spec, and the builder always emits all three. The two booleans are optional at the API level though — skipping either setter causes the builder to write the field with its default value (false) before opening the next state. This matches the write_builder ergonomics and keeps the common-case ceremony to invoke_requests()? only. The CmdData entries inside the array have an optional CommandRef, also implicitly skippable.

Field-state values:

  • 0: nothing written yet
  • 1: past SuppressResponse
  • 2: past TimedRequest
  • 3: past InvokeRequests array
  • 4: past InteractionModelRevision (auto-injected at default value IM_REVISION by end() if the optional setter wasn’t called)

Implementations§

Source§

impl<P> InvReqBuilder<P>

Source

pub fn new(p: P, tag: &TLVTag) -> Result<InvReqBuilder<P>, Error>

Begin a new InvokeRequestMessage — opens a struct at the given tag. For top-level use (the usual case) pass &TLVTag::Anonymous.

Source§

impl<P> InvReqBuilder<P>

Source

pub fn suppress_response( self, value: bool, ) -> Result<InvReqBuilder<P, 1>, Error>

Write the SuppressResponse field. Omitting this call is equivalent to suppress_response(false) (i.e. the typical case — most clients want a response); the builder emits the default automatically when timed_request or invoke_requests is called from state 0. Set to true only for fire-and-forget commands.

Source§

impl<P> InvReqBuilder<P>

Source

pub fn timed_request(self, value: bool) -> Result<InvReqBuilder<P, 2>, Error>

Write the TimedRequest field, implicitly emitting SuppressResponse(false) first (the common-case default).

Source§

impl<P> InvReqBuilder<P, 1>

Source

pub fn timed_request(self, value: bool) -> Result<InvReqBuilder<P, 2>, Error>

Write the TimedRequest field. Omitting this call is equivalent to timed_request(false); the builder emits the default automatically when invoke_requests is called from state 1. Set to true only when the surrounding flow sent a TimedRequest IM message first (some commands like ACL writes require this).

Source§

impl<P> InvReqBuilder<P>

Source

pub fn invoke_requests( self, ) -> Result<CmdDataArrayBuilder<InvReqBuilder<P, 3>>, Error>

Open the InvokeRequests array, implicitly emitting SuppressResponse(false) and TimedRequest(false) first.

Source§

impl<P> InvReqBuilder<P, 1>

Source

pub fn invoke_requests( self, ) -> Result<CmdDataArrayBuilder<InvReqBuilder<P, 3>>, Error>

Open the InvokeRequests array, implicitly emitting TimedRequest(false) first.

Source§

impl<P> InvReqBuilder<P, 2>

Source

pub fn invoke_requests( self, ) -> Result<CmdDataArrayBuilder<InvReqBuilder<P, 3>>, Error>

Open the InvokeRequests array. Each .push() starts one CmdDataBuilder; close with .end() to return to the message builder.

Source§

impl<P> InvReqBuilder<P, 3>

Source

pub fn interaction_model_revision( self, value: u8, ) -> Result<InvReqBuilder<P, 4>, Error>

Write the mandatory-on-the-wire InteractionModelRevision field (Matter Core: value is 13 since Matter 1.3, unchanged in 1.4 and 1.5). Optional at the API level — omit and end() injects IM_REVISION automatically.

Source

pub fn end(self) -> Result<P, Error>

Close the message struct, auto-injecting InteractionModelRevision at its default value IM_REVISION. Returns the parent.

Source§

impl<P> InvReqBuilder<P, 4>

Source

pub fn end(self) -> Result<P, Error>

Close the message struct and return the parent.

Trait Implementations§

Source§

impl<P, const F: usize> Debug for InvReqBuilder<P, F>
where P: Debug,

Source§

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

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

impl<P> TLVBuilder<P> for InvReqBuilder<P>

Source§

fn new(parent: P, tag: &TLVTag) -> Result<InvReqBuilder<P>, Error>

Create a new TLV builder for the given parent and tag.
Source§

fn unchecked_into_parent(self) -> P

Convert itself into a writer. Read more
Source§

fn with<F>(self, f: F) -> Result<P, Error>
where F: FnOnce(Self) -> Result<P, Error>,

Call a closure with the builder and return the result.
Source§

impl<P, const F: usize> TLVBuilderParent for InvReqBuilder<P, F>

Source§

type Write = <P as TLVBuilderParent>::Write

The type of the writer.
Source§

fn writer(&mut self) -> &mut <InvReqBuilder<P, F> as TLVBuilderParent>::Write

Return a mutable reference to the writer.

Auto Trait Implementations§

§

impl<P, const F: usize> Freeze for InvReqBuilder<P, F>
where P: Freeze,

§

impl<P, const F: usize> RefUnwindSafe for InvReqBuilder<P, F>
where P: RefUnwindSafe,

§

impl<P, const F: usize> Send for InvReqBuilder<P, F>
where P: Send,

§

impl<P, const F: usize> Sync for InvReqBuilder<P, F>
where P: Sync,

§

impl<P, const F: usize> Unpin for InvReqBuilder<P, F>
where P: Unpin,

§

impl<P, const F: usize> UnsafeUnpin for InvReqBuilder<P, F>
where P: UnsafeUnpin,

§

impl<P, const F: usize> UnwindSafe for InvReqBuilder<P, F>
where P: UnwindSafe,

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, E> Init<T, E> for T

Source§

unsafe fn __init(self, slot: *mut T) -> Result<(), E>

Initializes slot. Read more
Source§

fn chain<F>(self, f: F) -> ChainInit<Self, F, T, E>
where F: FnOnce(&mut T) -> Result<(), E>,

First initializes the value using self then calls the function f with the initialized value. 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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

impl<T, I> IntoFallibleInit<T> for I
where I: Init<T>,

Source§

fn into_fallible<E>(self) -> impl Init<T, E>

Convert the infallible initializer to a fallible one.
Source§

impl<Source, Target> OctetsInto<Target> for Source
where Target: OctetsFrom<Source>,

Source§

type Error = <Target as OctetsFrom<Source>>::Error

Source§

fn try_octets_into( self, ) -> Result<Target, <Source as OctetsInto<Target>>::Error>

Performs the conversion.
Source§

fn octets_into(self) -> Target
where Self::Error: Into<Infallible>,

Performs an infallible conversion.
Source§

impl<T, E> PinInit<T, E> for T

Source§

unsafe fn __pinned_init(self, slot: *mut T) -> Result<(), E>

Initializes slot. Read more
Source§

fn pin_chain<F>(self, f: F) -> ChainPinInit<Self, F, T, E>
where F: FnOnce(Pin<&mut T>) -> Result<(), E>,

First initializes the value using self then calls the function f with the initialized value. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V