arrow_array::types

Trait DecimalType

Source
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§

Source

const BYTE_LENGTH: usize

Width of the type

Source

const MAX_PRECISION: u8

Maximum number of significant digits

Source

const MAX_SCALE: i8

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

Source

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

fn to create its DataType

Source

const DEFAULT_TYPE: DataType

Default values for DataType

Source

const PREFIX: &'static str

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

Required Methods§

Source

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

Formats the decimal value with the provided precision and scale

Source

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

Validates that value contains no more than precision decimal digits

Source

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§

Source§

impl DecimalType for Decimal128Type

Source§

const BYTE_LENGTH: usize = 16usize

Source§

const MAX_PRECISION: u8 = 38u8

Source§

const MAX_SCALE: i8 = 38i8

Source§

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

Source§

const DEFAULT_TYPE: DataType = _

Source§

const PREFIX: &'static str = "Decimal128"

Source§

impl DecimalType for Decimal256Type

Source§

const BYTE_LENGTH: usize = 32usize

Source§

const MAX_PRECISION: u8 = 76u8

Source§

const MAX_SCALE: i8 = 76i8

Source§

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

Source§

const DEFAULT_TYPE: DataType = _

Source§

const PREFIX: &'static str = "Decimal256"