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<UnknownField> for UnknownField

source§

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

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

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

This method 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 Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. 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 Twhere 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 Twhere 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 Twhere 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 Twhere 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 Twhere 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.