#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
pub use crate::types::PrimitiveType;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub enum PhysicalType {
Null,
Boolean,
Primitive(PrimitiveType),
Binary,
FixedSizeBinary,
LargeBinary,
Utf8,
LargeUtf8,
List,
FixedSizeList,
LargeList,
Struct,
Union,
Map,
Dictionary(IntegerType),
BinaryView,
Utf8View,
}
impl PhysicalType {
pub fn eq_primitive(&self, primitive: PrimitiveType) -> bool {
if let Self::Primitive(o) = self {
o == &primitive
} else {
false
}
}
pub fn is_primitive(&self) -> bool {
matches!(self, Self::Primitive(_))
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "dsl-schema", derive(schemars::JsonSchema))]
pub enum IntegerType {
Int8,
Int16,
Int32,
Int64,
Int128,
UInt8,
UInt16,
UInt32,
UInt64,
UInt128,
}