Skip to main content

SubgroupObjectMeta

Struct SubgroupObjectMeta 

Source
pub struct SubgroupObjectMeta {
    pub object_id: u64,
    pub extension_headers_len: u64,
    pub payload_length: u64,
    pub status: Option<u64>,
    pub wire_len: u64,
}
Expand description

The framing of one subgroup object, without its payload.

Produced by SubgroupObjectReader::read_object_meta for callers that forward an object’s bytes verbatim and never inspect the payload.

Fields§

§object_id: u64

Resolved Object ID (delta decoded to an absolute value).

§extension_headers_len: u64

Byte length of the extension-header block’s contents, excluding its length prefix.

§payload_length: u64

Declared payload length. Zero when status is Some.

§status: Option<u64>

Object Status wire code, present only when the payload is empty.

§wire_len: u64

Total bytes this object occupies on the wire, prefix fields included.

Implementations§

Source§

impl SubgroupObjectMeta

Source

pub fn payload_permission(&self) -> Option<PayloadPermission>

Whether this object’s status permits it a non-empty payload.

The same question SubgroupObject::permits_payload answers, from the declared length and the wire code rather than from the bytes. A relay that forwards an object verbatim reads it through SubgroupObjectReader::read_object_meta and never copies the payload, so asking this must not require having it.

An absent status answers PayloadPermission::Permitted rather than None. A meta has no status only when its payload length is non-zero, so the object has a status — the encoding just does not spell it.

None means the code is one this draft leaves unassigned, and so one it gives no payload rule for. That is not reachable through SubgroupObjectReader::read_object_meta, which refuses such a code before it can reach the field, but the fields here are public and a meta assembled by hand — by a relay carrying a status across from a draft that numbers them differently, say — can hold anything a varint can. The answer there is that this draft has none, not that the payload is forbidden.

Trait Implementations§

Source§

impl Clone for SubgroupObjectMeta

Source§

fn clone(&self) -> SubgroupObjectMeta

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 Copy for SubgroupObjectMeta

Source§

impl Debug for SubgroupObjectMeta

Source§

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

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

impl Eq for SubgroupObjectMeta

Source§

impl PartialEq for SubgroupObjectMeta

Source§

fn eq(&self, other: &SubgroupObjectMeta) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for SubgroupObjectMeta

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