risingwave_common/types/
native_type.rsuse std::fmt::Debug;
use std::io::Write;
use super::{Serial, F32, F64};
use crate::array::ArrayResult;
pub trait NativeType:
PartialOrd + PartialEq + Debug + Copy + Send + Sync + Sized + Default + 'static
{
fn to_protobuf<T: Write>(self, output: &mut T) -> ArrayResult<usize>;
}
impl NativeType for i16 {
fn to_protobuf<T: Write>(self, output: &mut T) -> ArrayResult<usize> {
output.write(&self.to_be_bytes()).map_err(Into::into)
}
}
impl NativeType for i32 {
fn to_protobuf<T: Write>(self, output: &mut T) -> ArrayResult<usize> {
output.write(&self.to_be_bytes()).map_err(Into::into)
}
}
impl NativeType for i64 {
fn to_protobuf<T: Write>(self, output: &mut T) -> ArrayResult<usize> {
output.write(&self.to_be_bytes()).map_err(Into::into)
}
}
impl NativeType for Serial {
fn to_protobuf<T: Write>(self, output: &mut T) -> ArrayResult<usize> {
output
.write(&self.into_inner().to_be_bytes())
.map_err(Into::into)
}
}
impl NativeType for F32 {
fn to_protobuf<T: Write>(self, output: &mut T) -> ArrayResult<usize> {
output.write(&self.0.to_be_bytes()).map_err(Into::into)
}
}
impl NativeType for F64 {
fn to_protobuf<T: Write>(self, output: &mut T) -> ArrayResult<usize> {
output.write(&self.0.to_be_bytes()).map_err(Into::into)
}
}
impl NativeType for u8 {
fn to_protobuf<T: Write>(self, output: &mut T) -> ArrayResult<usize> {
output.write(&self.to_be_bytes()).map_err(Into::into)
}
}
impl NativeType for u16 {
fn to_protobuf<T: Write>(self, output: &mut T) -> ArrayResult<usize> {
output.write(&self.to_be_bytes()).map_err(Into::into)
}
}
impl NativeType for u32 {
fn to_protobuf<T: Write>(self, output: &mut T) -> ArrayResult<usize> {
output.write(&self.to_be_bytes()).map_err(Into::into)
}
}
impl NativeType for u64 {
fn to_protobuf<T: Write>(self, output: &mut T) -> ArrayResult<usize> {
output.write(&self.to_be_bytes()).map_err(Into::into)
}
}