Skip to main content

Crate qubit_datatype

Crate qubit_datatype 

Source
Expand description

Runtime data type descriptors and policy-driven conversion utilities.

The default feature set is empty and exposes the lightweight DataType vocabulary plus DataTypeOf. Optional chrono, big-number, url, and json features add mappings for external types. The converter feature enables core scalar, string, and Duration conversions. Combine it with a rich-type feature to enable conversions for that family, or use all.

§Conversion contract

With converter, strings can target fixed-width numeric, boolean, character, and Duration values. Fixed-width integers can target numeric, boolean, and Duration values; floats can target fixed-width numeric values; Duration can target fixed-width integers and String. chrono, big-number, url, and json add their corresponding source and target conversions when combined with converter; JSON also enables StringMap parsing and formatting. Other type pairs return DataConversionError::Unsupported.

Numeric conversion defaults to NumericConversionPolicy::Exact, which rejects truncation, rounding, and precision loss. Explicit Lossy mode permits finite decimal/float truncation toward zero, integer-to-float IEEE rounding, and Duration half-up rounding. Duration-to-integer and Duration-to-String require exact divisibility in Exact mode.

Strings are not trimmed by default and are normalized exactly once. Boolean text defaults to true and false; numeric 0/1 handling is controlled independently by BooleanNumericPolicy. Duration text uses [0-9]+(ns|us|µs|μs|ms|s|m|h|d)?.

§Example

use qubit_datatype::{
    DataConversionError, InvalidValueReason, DataConversionOptions,
    DataConverter,
};

assert!(matches!(
    DataConverter::from("3.9").to::<i32>(),
    Err(DataConversionError::InvalidValue {
        reason: InvalidValueReason::PrecisionLoss,
        ..
    }),
));

let lossy = DataConversionOptions::lossy();
assert_eq!(DataConverter::from(" 3.9 ").to_with::<i32>(&lossy), Ok(3));

Re-exports§

pub use converter::BlankStringPolicy;
pub use converter::BooleanConversionOptions;
pub use converter::BooleanLiteralConflictError;
pub use converter::BooleanNumericPolicy;
pub use converter::CollectionConversionOptions;
pub use converter::DataConversionError;
pub use converter::DataConversionOptions;
pub use converter::DataConvertTo;
pub use converter::DataConverter;
pub use converter::DataConverters;
pub use converter::DataFormat;
pub use converter::DataListConversionError;
pub use converter::DurationConversionOptions;
pub use converter::DurationOverflowError;
pub use converter::DurationUnit;
pub use converter::EmptyItemPolicy;
pub use converter::InvalidValueReason;
pub use converter::NumericConversionPolicy;
pub use converter::ScalarItem;
pub use converter::ScalarItemError;
pub use converter::ScalarItems;
pub use converter::ScalarStringDataConverters;
pub use converter::StringConversionOptions;
pub use converter::StringNormalizationError;
pub use converter::SuffixlessDurationPolicy;
pub use datatype::DataType;
pub use datatype::DataTypeOf;
pub use datatype::DataTypeParseError;

Modules§

converter
Runtime value conversion utilities.
datatype
Data type descriptors and compile-time type mappings.