Skip to main content

NativeType

Trait NativeType 

Source
pub trait NativeType:
    PartialEq
    + Default
    + Sized
    + Debug {
    const TYPE: WireType;

    // Required methods
    fn merge(&mut self, src: &mut Bytes) -> Result<(), DecodeError>;
    fn encode_value(&self, dst: &mut BytePages);

    // Provided methods
    fn value_len(&self) -> usize { ... }
    fn is_default(&self) -> bool { ... }
    fn encode_type(&self, tag: u32, dst: &mut BytePages) { ... }
    fn encoded_len(&self, tag: u32) -> usize { ... }
    fn serialize(
        &self,
        tag: u32,
        default: DefaultValue<&Self>,
        dst: &mut BytePages,
    ) { ... }
    fn serialized_len(&self, tag: u32, default: DefaultValue<&Self>) -> usize { ... }
    fn deserialize(
        &mut self,
        _: u32,
        wtype: WireType,
        src: &mut Bytes,
    ) -> Result<(), DecodeError> { ... }
    fn deserialize_default(
        tag: u32,
        wtype: WireType,
        src: &mut Bytes,
    ) -> Result<Self, DecodeError> { ... }
}
Expand description

Protobuf type serializer

Required Associated Constants§

Required Methods§

Source

fn merge(&mut self, src: &mut Bytes) -> Result<(), DecodeError>

Deserialize from the input

Source

fn encode_value(&self, dst: &mut BytePages)

Encode field value

Provided Methods§

Source

fn value_len(&self) -> usize

Returns the encoded length of the message without a length delimiter.

Source

fn is_default(&self) -> bool

Check if value is default

Source

fn encode_type(&self, tag: u32, dst: &mut BytePages)

Encode field tag and length

Source

fn encoded_len(&self, tag: u32) -> usize

Protobuf field length

Source

fn serialize(&self, tag: u32, default: DefaultValue<&Self>, dst: &mut BytePages)

Serialize protobuf field

Source

fn serialized_len(&self, tag: u32, default: DefaultValue<&Self>) -> usize

Protobuf field length

Source

fn deserialize( &mut self, _: u32, wtype: WireType, src: &mut Bytes, ) -> Result<(), DecodeError>

Deserialize protobuf field

Source

fn deserialize_default( tag: u32, wtype: WireType, src: &mut Bytes, ) -> Result<Self, DecodeError>

Deserialize protobuf field to default value

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl NativeType for bool

Source§

const TYPE: WireType = WireType::Varint

Source§

fn is_default(&self) -> bool

Source§

fn encode_value(&self, dst: &mut BytePages)

Source§

fn encoded_len(&self, tag: u32) -> usize

Source§

fn value_len(&self) -> usize

Source§

fn merge(&mut self, src: &mut Bytes) -> Result<(), DecodeError>

Source§

impl NativeType for f32

Source§

const TYPE: WireType = WireType::ThirtyTwoBit

Source§

fn is_default(&self) -> bool

Source§

fn encode_value(&self, dst: &mut BytePages)

Source§

fn encoded_len(&self, tag: u32) -> usize

Source§

fn value_len(&self) -> usize

Source§

fn merge(&mut self, src: &mut Bytes) -> Result<(), DecodeError>

Source§

impl NativeType for f64

Source§

const TYPE: WireType = WireType::SixtyFourBit

Source§

fn is_default(&self) -> bool

Source§

fn encode_value(&self, dst: &mut BytePages)

Source§

fn encoded_len(&self, tag: u32) -> usize

Source§

fn value_len(&self) -> usize

Source§

fn merge(&mut self, src: &mut Bytes) -> Result<(), DecodeError>

Source§

impl NativeType for i32

Source§

const TYPE: WireType = WireType::Varint

Source§

fn is_default(&self) -> bool

Source§

fn encode_value(&self, dst: &mut BytePages)

Source§

fn encoded_len(&self, tag: u32) -> usize

Source§

fn value_len(&self) -> usize

Source§

fn merge(&mut self, src: &mut Bytes) -> Result<(), DecodeError>

Source§

impl NativeType for i64

Source§

const TYPE: WireType = WireType::Varint

Source§

fn is_default(&self) -> bool

Source§

fn encode_value(&self, dst: &mut BytePages)

Source§

fn encoded_len(&self, tag: u32) -> usize

Source§

fn value_len(&self) -> usize

Source§

fn merge(&mut self, src: &mut Bytes) -> Result<(), DecodeError>

Source§

impl NativeType for u32

Source§

const TYPE: WireType = WireType::Varint

Source§

fn is_default(&self) -> bool

Source§

fn encode_value(&self, dst: &mut BytePages)

Source§

fn encoded_len(&self, tag: u32) -> usize

Source§

fn value_len(&self) -> usize

Source§

fn merge(&mut self, src: &mut Bytes) -> Result<(), DecodeError>

Source§

impl NativeType for u64

Source§

const TYPE: WireType = WireType::Varint

Source§

fn is_default(&self) -> bool

Source§

fn encode_value(&self, dst: &mut BytePages)

Source§

fn encoded_len(&self, tag: u32) -> usize

Source§

fn value_len(&self) -> usize

Source§

fn merge(&mut self, src: &mut Bytes) -> Result<(), DecodeError>

Source§

impl NativeType for String

Source§

const TYPE: WireType = WireType::LengthDelimited

Source§

fn value_len(&self) -> usize

Source§

fn merge(&mut self, src: &mut Bytes) -> Result<(), DecodeError>

Source§

fn encode_value(&self, dst: &mut BytePages)

Source§

fn is_default(&self) -> bool

Source§

impl NativeType for Arc<str>

Source§

const TYPE: WireType = WireType::LengthDelimited

Source§

fn value_len(&self) -> usize

Source§

fn merge(&mut self, src: &mut Bytes) -> Result<(), DecodeError>

Source§

fn encode_value(&self, dst: &mut BytePages)

Source§

fn is_default(&self) -> bool

Source§

impl NativeType for Vec<u8>

Source§

fn encode_value(&self, dst: &mut BytePages)

Serialize field value

Source§

fn merge(&mut self, src: &mut Bytes) -> Result<(), DecodeError>

Deserialize from the input

Source§

const TYPE: WireType = WireType::LengthDelimited

Source§

fn value_len(&self) -> usize

Source§

fn is_default(&self) -> bool

Source§

impl NativeType for Bytes

Source§

fn encode_value(&self, dst: &mut BytePages)

Serialize field value

Source§

fn merge(&mut self, src: &mut Bytes) -> Result<(), DecodeError>

Deserialize from the input

Source§

const TYPE: WireType = WireType::LengthDelimited

Source§

fn value_len(&self) -> usize

Source§

fn is_default(&self) -> bool

Source§

impl NativeType for ByteString

Source§

const TYPE: WireType = WireType::LengthDelimited

Source§

fn value_len(&self) -> usize

Source§

fn merge(&mut self, src: &mut Bytes) -> Result<(), DecodeError>

Source§

fn encode_value(&self, dst: &mut BytePages)

Source§

fn is_default(&self) -> bool

Source§

impl<K: NativeType + Eq + Hash, V: NativeType, S: BuildHasher + Default> NativeType for HashMap<K, V, S>

Source§

fn merge(&mut self, _: &mut Bytes) -> Result<(), DecodeError>

Deserialize from the input

Source§

fn encode_value(&self, _: &mut BytePages)

Serialize field value

Source§

fn deserialize( &mut self, _: u32, wtype: WireType, src: &mut Bytes, ) -> Result<(), DecodeError>

Deserialize protobuf field

Source§

fn serialize(&self, tag: u32, _: DefaultValue<&Self>, dst: &mut BytePages)

Serialize protobuf field

Source§

fn encoded_len(&self, tag: u32) -> usize

Generic protobuf map encode function with an overridden value default.

Source§

const TYPE: WireType = WireType::LengthDelimited

Source§

fn is_default(&self) -> bool

Source§

impl<T: NativeType> NativeType for Option<T>

Source§

fn encode_value(&self, _: &mut BytePages)

Serialize field value

Source§

fn merge(&mut self, _: &mut Bytes) -> Result<(), DecodeError>

Deserialize from the input

Source§

fn deserialize( &mut self, tag: u32, wtype: WireType, src: &mut Bytes, ) -> Result<(), DecodeError>

Deserialize protobuf field

Source§

fn serialize(&self, tag: u32, _: DefaultValue<&Self>, dst: &mut BytePages)

Serialize protobuf field

Source§

fn serialized_len(&self, tag: u32, _: DefaultValue<&Self>) -> usize

Protobuf field length

Source§

fn encoded_len(&self, tag: u32) -> usize

Protobuf field length

Source§

const TYPE: WireType = WireType::LengthDelimited

Source§

fn is_default(&self) -> bool

Source§

impl<T: NativeType> NativeType for Vec<T>

Source§

fn encode_value(&self, _: &mut BytePages)

Serialize field value

Source§

fn merge(&mut self, _: &mut Bytes) -> Result<(), DecodeError>

Deserialize from the input

Source§

fn deserialize( &mut self, tag: u32, wtype: WireType, src: &mut Bytes, ) -> Result<(), DecodeError>

Deserialize protobuf field

Source§

fn serialize(&self, tag: u32, _: DefaultValue<&Self>, dst: &mut BytePages)

Serialize protobuf field

Source§

fn encoded_len(&self, tag: u32) -> usize

Protobuf field length

Source§

const TYPE: WireType = WireType::LengthDelimited

Source§

fn is_default(&self) -> bool

Implementors§

Source§

impl<T: Message + PartialEq> NativeType for T

Source§

const TYPE: WireType = WireType::LengthDelimited