arrow::datatypes

Trait DecimalType

pub trait DecimalType:
    'static
    + Send
    + Sync
    + ArrowPrimitiveType
    + DecimalTypeSealed {
    const BYTE_LENGTH: usize;
    const MAX_PRECISION: u8;
    const MAX_SCALE: i8;
    const TYPE_CONSTRUCTOR: fn(_: u8, _: i8) -> DataType;
    const DEFAULT_TYPE: DataType;
    const PREFIX: &'static str;

    // Required methods
    fn format_decimal(value: Self::Native, precision: u8, scale: i8) -> String;
    fn validate_decimal_precision(
        value: Self::Native,
        precision: u8,
    ) -> Result<(), ArrowError>;
    fn is_valid_decimal_precision(value: Self::Native, precision: u8) -> bool;
}
Expand description

A trait over the decimal types, used by PrimitiveArray to provide a generic implementation across the various decimal types

Implemented by Decimal128Type and Decimal256Type for Decimal128Array and Decimal256Array respectively

Required Associated Constants§

const BYTE_LENGTH: usize

Width of the type

const MAX_PRECISION: u8

Maximum number of significant digits

const MAX_SCALE: i8

Maximum no of digits after the decimal point (note the scale can be negative)

const TYPE_CONSTRUCTOR: fn(_: u8, _: i8) -> DataType

fn to create its DataType

const DEFAULT_TYPE: DataType

Default values for DataType

const PREFIX: &'static str

“Decimal128” or “Decimal256”, for use in error messages

Required Methods§

fn format_decimal(value: Self::Native, precision: u8, scale: i8) -> String

Formats the decimal value with the provided precision and scale

fn validate_decimal_precision( value: Self::Native, precision: u8, ) -> Result<(), ArrowError>

Validates that value contains no more than precision decimal digits

fn is_valid_decimal_precision(value: Self::Native, precision: u8) -> bool

Determines whether value contains no more than precision decimal digits

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.

Implementors§

§

impl DecimalType for Decimal128Type

§

const BYTE_LENGTH: usize = 16usize

§

const MAX_PRECISION: u8 = 38u8

§

const MAX_SCALE: i8 = 38i8

§

const TYPE_CONSTRUCTOR: fn(_: u8, _: i8) -> DataType = {arrow_schema::DataType::Decimal128 as fn(u8, i8) -> arrow_schema::DataType}

§

const DEFAULT_TYPE: DataType = _

§

const PREFIX: &'static str = "Decimal128"

§

impl DecimalType for Decimal256Type

§

const BYTE_LENGTH: usize = 32usize

§

const MAX_PRECISION: u8 = 76u8

§

const MAX_SCALE: i8 = 76i8

§

const TYPE_CONSTRUCTOR: fn(_: u8, _: i8) -> DataType = {arrow_schema::DataType::Decimal256 as fn(u8, i8) -> arrow_schema::DataType}

§

const DEFAULT_TYPE: DataType = _

§

const PREFIX: &'static str = "Decimal256"