Skip to main content

Binding

Struct Binding 

Source
pub struct Binding {
    pub local_endpoint: u16,
    pub fab_idx: NonZero<u8>,
    pub node: Option<u64>,
    pub group: Option<u16>,
    pub endpoint: Option<u16>,
    pub cluster: Option<u32>,
}
Expand description

One binding entry: the local endpoint it is attached to, the fabric it belongs to, and the destination it points at.

This is the single entry type used for storage, persistence, and the application-facing read API (Bindings::get). Application code that acts on the device’s bindings (e.g. a switch reading its binding list to decide which node(s) to send a command to) receives it cloned, so the registry lock is never held across the await of the subsequent remote invoke. It is small but not trivially Copy, hence Clone.

local_endpoint is this device’s endpoint that hosts the binding — not to be confused with the remote target’s endpoint. A unicast target has both node and endpoint set (cluster optional); a groupcast target has group set instead. The destination fields mirror the spec’s TargetStruct.

Wire layout follows the standard derive(FromTLV, ToTLV) shape — a TLV struct with positional context-tagged fields. Option<T> fields are omit-if-None. The encoding is decoupled from the wire-level TargetStruct (which puts FabricIndex at ctx 254): we own the persisted layout and only need it to be self-consistent.

Fields§

§local_endpoint: u16

The local endpoint this binding is attached to.

§fab_idx: NonZero<u8>

The fabric this binding belongs to.

§node: Option<u64>

The remote node id (set for a unicast target).

§group: Option<u16>

The group id (set for a groupcast target).

§endpoint: Option<u16>

The remote endpoint (set for a unicast target).

§cluster: Option<u32>

The cluster to address (optional).

Trait Implementations§

Source§

impl Clone for Binding

Source§

fn clone(&self) -> Binding

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 Debug for Binding

Source§

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

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

impl<'__from_tlv> FromTLV<'__from_tlv> for Binding

Source§

fn from_tlv(element: &TLVElement<'__from_tlv>) -> Result<Binding, Error>

Deserialize the type from a TLV-encoded element.
Source§

fn init_from_tlv(element: TLVElement<'__from_tlv>) -> impl Init<Binding, Error>

Generate an in-place initializer for the type that initializes the type from a TLV-encoded element.
Source§

fn nullable_from_tlv(element: &TLVElement<'a>) -> Result<Self, Error>

Deserialize the type from a TLV-encoded element. Read more
Source§

fn init_nullable_from_tlv(element: TLVElement<'a>) -> impl Init<Self, Error>

Generate an in-place initializer for the type that initializes the type from a TLV-encoded element. Read more
Source§

impl ToTLV for Binding

Source§

fn to_tlv<W>(&self, tag: &TLVTag, tw: W) -> Result<(), Error>
where W: TLVWrite,

Serialize the type to a TLV-encoded stream.
Source§

fn tlv_iter(&self, tag: TLVTag) -> impl Iterator<Item = Result<TLV<'_>, Error>>

Serialize the type as an iterator of TLV instances by potentially borrowing data from the type.
Source§

fn nullable_to_tlv<W>(&self, tag: &TLVTag, tw: W) -> Result<(), Error>
where W: TLVWrite,

Serialize the type to a TLV-encoded stream. Read more
Source§

fn nullable_tlv_iter( &self, tag: TLVTag, ) -> impl Iterator<Item = Result<TLV<'_>, Error>>

Serialize the type as an iterator of TLV instances by potentially borrowing data from the type. Read more
Source§

impl<'__from_tlv> TryFrom<&TLVElement<'__from_tlv>> for Binding

Source§

type Error = Error

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

fn try_from( element: &TLVElement<'__from_tlv>, ) -> Result<Binding, <Binding as TryFrom<&TLVElement<'__from_tlv>>>::Error>

Performs the conversion.

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<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> 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, 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> 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 = 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