Struct prost_reflect::UnknownField

source ·
pub struct UnknownField { /* private fields */ }
Expand description

An unknown field found when deserializing a protobuf message.

A field is unknown if the message descriptor does not contain a field with the given number. This is often the result of a new field being added to the message definition.

The Message implementation of DynamicMessage will preserve any unknown fields.

Implementations§

source§

impl UnknownField

source

pub fn number(&self) -> u32

The number of this field as found during decoding.

source

pub fn wire_type(&self) -> WireType

The wire type of this field as found during decoding.

source

pub fn encode<B>(&self, buf: &mut B)
where B: BufMut,

Encodes this field into its byte representation.

source

pub fn decode<B>(buf: &mut B, ctx: DecodeContext) -> Result<Self, DecodeError>
where B: Buf,

Decodes an unknown field from the given buffer.

This method will read the field number and wire type from the buffer. Normally, it is useful to know the field number before deciding whether to treat a field as unknown. See decode_value if you have already read the number.

§Examples
let unknown_field = UnknownField::decode(&mut b"\x1a\x02\x10\x42".as_ref(), DecodeContext::default()).unwrap();
assert_eq!(unknown_field.number(), 3);
assert_eq!(unknown_field.wire_type(), WireType::LengthDelimited);
source

pub fn decode_value<B>( number: u32, wire_type: WireType, buf: &mut B, ctx: DecodeContext, ) -> Result<Self, DecodeError>
where B: Buf,

Given a field number and wire type, decodes the value of an unknown field.

This method assumes the field number and wire type have already been read from the buffer. See also decode.

§Examples
let unknown_field = UnknownField::decode_value(3, WireType::LengthDelimited, &mut b"\x02\x10\x42".as_ref(), DecodeContext::default()).unwrap();
assert_eq!(unknown_field.number(), 3);
assert_eq!(unknown_field.wire_type(), WireType::LengthDelimited);

let mut buf = Vec::new();
unknown_field.encode(&mut buf);
assert_eq!(buf, b"\x1a\x02\x10\x42");
source

pub fn encoded_len(&self) -> usize

Gets the length of this field when encoded to its byte representation.

Trait Implementations§

source§

impl Clone for UnknownField

source§

fn clone(&self) -> UnknownField

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for UnknownField

source§

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

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

impl Display for UnknownField

source§

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

Formats this unknown field using the protobuf text format.

The protobuf format does not include type information, so the formatter will attempt to infer types.

§Examples
let unknown_field = UnknownField::decode(&mut b"\x1a\x02\x10\x42".as_ref(), DecodeContext::default()).unwrap();
assert_eq!(format!("{}", unknown_field), "3{2:66}");
// The alternate format specifier may be used to indent the output
assert_eq!(format!("{:#}", unknown_field), "3 {\n  2: 66\n}");
source§

impl PartialEq for UnknownField

source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl StructuralPartialEq for UnknownField

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§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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,

§

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> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

§

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

§

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.