Trait MaybeData

Source
trait MaybeData: Debug {
    type Out;

    // Required methods
    fn on_base(
        self,
        f: impl FnOnce(ScalarRefImpl<'_>) -> Result<Value, FieldEncodeError>,
    ) -> Result<Self::Out, FieldEncodeError>;
    fn on_struct(
        self,
        st: &StructType,
        avro: &AvroSchema,
        refs: &NamesRef,
    ) -> Result<Self::Out, FieldEncodeError>;
    fn on_list(
        self,
        elem: &DataType,
        avro: &AvroSchema,
        refs: &NamesRef,
    ) -> Result<Self::Out, FieldEncodeError>;
    fn on_map(
        self,
        value_type: &DataType,
        avro_value_schema: &AvroSchema,
        refs: &NamesRef,
    ) -> Result<Self::Out, FieldEncodeError>;
    fn handle_nullable_union(
        out: Self::Out,
        opt_idx: OptIdx,
    ) -> Result<Self::Out, FieldEncodeError>;
}
Expand description

A trait that assists code reuse between validate and encode.

  • For validate, the inputs are (RisingWave type, ProtoBuf type).
  • For encode, the inputs are (RisingWave type, RisingWave data, ProtoBuf type).

Thus we impl MaybeData for both [()] and [DatumRef].

Required Associated Types§

Required Methods§

Source

fn on_base( self, f: impl FnOnce(ScalarRefImpl<'_>) -> Result<Value, FieldEncodeError>, ) -> Result<Self::Out, FieldEncodeError>

Source

fn on_struct( self, st: &StructType, avro: &AvroSchema, refs: &NamesRef, ) -> Result<Self::Out, FieldEncodeError>

Switch to RecordSchema after #12562

Source

fn on_list( self, elem: &DataType, avro: &AvroSchema, refs: &NamesRef, ) -> Result<Self::Out, FieldEncodeError>

Source

fn on_map( self, value_type: &DataType, avro_value_schema: &AvroSchema, refs: &NamesRef, ) -> Result<Self::Out, FieldEncodeError>

Source

fn handle_nullable_union( out: Self::Out, opt_idx: OptIdx, ) -> Result<Self::Out, FieldEncodeError>

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 MaybeData for ()

Source§

type Out = ()

Source§

fn on_base( self, _: impl FnOnce(ScalarRefImpl<'_>) -> Result<Value, FieldEncodeError>, ) -> Result<Self::Out, FieldEncodeError>

Source§

fn on_struct( self, st: &StructType, avro: &AvroSchema, refs: &NamesRef, ) -> Result<Self::Out, FieldEncodeError>

Source§

fn on_list( self, elem: &DataType, avro: &AvroSchema, refs: &NamesRef, ) -> Result<Self::Out, FieldEncodeError>

Source§

fn on_map( self, elem: &DataType, avro: &AvroSchema, refs: &NamesRef, ) -> Result<Self::Out, FieldEncodeError>

Source§

fn handle_nullable_union( out: Self::Out, _: OptIdx, ) -> Result<Self::Out, FieldEncodeError>

Source§

impl MaybeData for DatumRef<'_>

Source§

type Out = Value

Source§

fn on_base( self, f: impl FnOnce(ScalarRefImpl<'_>) -> Result<Value, FieldEncodeError>, ) -> Result<Self::Out, FieldEncodeError>

Source§

fn on_struct( self, st: &StructType, avro: &AvroSchema, refs: &NamesRef, ) -> Result<Self::Out, FieldEncodeError>

Source§

fn on_list( self, elem: &DataType, avro: &AvroSchema, refs: &NamesRef, ) -> Result<Self::Out, FieldEncodeError>

Source§

fn on_map( self, elem: &DataType, avro: &AvroSchema, refs: &NamesRef, ) -> Result<Self::Out, FieldEncodeError>

Source§

fn handle_nullable_union( out: Self::Out, opt_idx: OptIdx, ) -> Result<Self::Out, FieldEncodeError>

Implementors§