WriteThriftField

Trait WriteThriftField 

Source
pub(crate) trait WriteThriftField {
    // Required method
    fn write_thrift_field<W: Write>(
        &self,
        writer: &mut ThriftCompactOutputProtocol<W>,
        field_id: i16,
        last_field_id: i16,
    ) -> Result<i16>;
}
Expand description

Trait implemented by objects that are fields of Thrift structs.

For example, given the Thrift struct definition

struct MyStruct {
  1: required i32 field1
  2: optional bool field2
  3: optional OtherStruct field3
}

which becomes in Rust

struct MyStruct {
  field1: i32,
  field2: Option<bool>,
  field3: Option<OtherStruct>,
}

the impl of WriteThrift for MyStruct will use the WriteThriftField impls for i32, bool, and OtherStruct.

impl WriteThrift for MyStruct {
  fn write_thrift<W: Write>(&self, writer: &mut ThriftCompactOutputProtocol<W>) -> Result<()> {
    let mut last_field_id = 0i16;
    last_field_id = self.field1.write_thrift_field(writer, 1, last_field_id)?;
    if self.field2.is_some() {
      // if field2 is `None` then this assignment won't happen and last_field_id will remain
      // `1` when writing `field3`
      last_field_id = self.field2.write_thrift_field(writer, 2, last_field_id)?;
    }
    if self.field3.is_some() {
      // no need to assign last_field_id since this is the final field.
      self.field3.write_thrift_field(writer, 3, last_field_id)?;
    }
    writer.write_struct_end()
  }
}

Required Methods§

Source

fn write_thrift_field<W: Write>( &self, writer: &mut ThriftCompactOutputProtocol<W>, field_id: i16, last_field_id: i16, ) -> Result<i16>

Used to write struct fields (which may be primitive or IDL defined types). This will write the field marker for the given field_id, using last_field_id to compute the field delta used by the Thrift compact protocol. On success this will return field_id to be used in chaining.

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 WriteThriftField for &str

Source§

fn write_thrift_field<W: Write>( &self, writer: &mut ThriftCompactOutputProtocol<W>, field_id: i16, last_field_id: i16, ) -> Result<i16>

Source§

impl WriteThriftField for &[u8]

Source§

fn write_thrift_field<W: Write>( &self, writer: &mut ThriftCompactOutputProtocol<W>, field_id: i16, last_field_id: i16, ) -> Result<i16>

Source§

impl WriteThriftField for bool

Source§

fn write_thrift_field<W: Write>( &self, writer: &mut ThriftCompactOutputProtocol<W>, field_id: i16, last_field_id: i16, ) -> Result<i16>

Source§

impl WriteThriftField for f64

Source§

fn write_thrift_field<W: Write>( &self, writer: &mut ThriftCompactOutputProtocol<W>, field_id: i16, last_field_id: i16, ) -> Result<i16>

Source§

impl WriteThriftField for i8

Source§

fn write_thrift_field<W: Write>( &self, writer: &mut ThriftCompactOutputProtocol<W>, field_id: i16, last_field_id: i16, ) -> Result<i16>

Source§

impl WriteThriftField for i16

Source§

fn write_thrift_field<W: Write>( &self, writer: &mut ThriftCompactOutputProtocol<W>, field_id: i16, last_field_id: i16, ) -> Result<i16>

Source§

impl WriteThriftField for i32

Source§

fn write_thrift_field<W: Write>( &self, writer: &mut ThriftCompactOutputProtocol<W>, field_id: i16, last_field_id: i16, ) -> Result<i16>

Source§

impl WriteThriftField for i64

Source§

fn write_thrift_field<W: Write>( &self, writer: &mut ThriftCompactOutputProtocol<W>, field_id: i16, last_field_id: i16, ) -> Result<i16>

Source§

impl WriteThriftField for String

Source§

fn write_thrift_field<W: Write>( &self, writer: &mut ThriftCompactOutputProtocol<W>, field_id: i16, last_field_id: i16, ) -> Result<i16>

Source§

impl<T> WriteThriftField for Vec<T>
where T: WriteThrift,

Source§

fn write_thrift_field<W: Write>( &self, writer: &mut ThriftCompactOutputProtocol<W>, field_id: i16, last_field_id: i16, ) -> Result<i16>

Implementors§

Source§

impl WriteThriftField for BloomFilterAlgorithm

Source§

impl WriteThriftField for BloomFilterCompression

Source§

impl WriteThriftField for BloomFilterHash

Source§

impl WriteThriftField for BoundaryOrder

Source§

impl WriteThriftField for Compression

Source§

impl WriteThriftField for ConvertedType

Source§

impl WriteThriftField for EdgeInterpolationAlgorithm

Source§

impl WriteThriftField for Encoding

Source§

impl WriteThriftField for FieldRepetitionType

Source§

impl WriteThriftField for LogicalType

Source§

impl WriteThriftField for PageType

Source§

impl WriteThriftField for TimeUnit

Source§

impl WriteThriftField for Type

Source§

impl WriteThriftField for ColumnCryptoMetaData

Source§

impl WriteThriftField for EncryptionAlgorithm

Source§

impl WriteThriftField for DecimalType

Source§

impl WriteThriftField for IntType

Source§

impl WriteThriftField for TimestampType

Source§

impl WriteThriftField for VariantType

Source§

impl WriteThriftField for BloomFilterHeader

Source§

impl WriteThriftField for EncryptionWithColumnKey

Source§

impl WriteThriftField for KeyValue

Source§

impl WriteThriftField for PageEncodingStats

Source§

impl WriteThriftField for SortingColumn

Source§

impl WriteThriftField for AesGcmCtrV1

Source§

impl WriteThriftField for AesGcmV1

Source§

impl WriteThriftField for BoundingBox

Source§

impl WriteThriftField for DataPageHeader

Source§

impl WriteThriftField for DataPageHeaderV2

Source§

impl WriteThriftField for DictionaryPageHeader

Source§

impl WriteThriftField for GeospatialStatistics

Source§

impl WriteThriftField for IndexPageHeader

Source§

impl WriteThriftField for PageHeader

Source§

impl WriteThriftField for PageStatistics

Source§

impl WriteThriftField for SizeStatistics

Source§

impl WriteThriftField for OffsetIndexMetaData

Source§

impl WriteThriftField for PageLocation

Source§

impl WriteThriftField for OrderedF64

Source§

impl<'a> WriteThriftField for GeographyType<'a>

Source§

impl<'a> WriteThriftField for GeometryType<'a>

Source§

impl<'a> WriteThriftField for ColumnChunk<'a>

Source§

impl<'a> WriteThriftField for ColumnMetaData<'a>

Source§

impl<'a> WriteThriftField for FileCryptoMetaData<'a>

Source§

impl<'a> WriteThriftField for FileMetaData<'a>

Source§

impl<'a> WriteThriftField for RowGroup<'a>

Source§

impl<'a> WriteThriftField for SchemaElement<'a>

Source§

impl<'a> WriteThriftField for Statistics<'a>

Source§

impl<'a> WriteThriftField for ThriftColumnIndex<'a>