qubit-datatype

Runtime data type descriptors and conversion utilities for Rust

Rust CI Coverage Crates.io Rust License

面向 Rust 的运行时数据类型描述与类型转换工具库。

概述

Qubit Datatype 提供统一的 DataType 枚举、通过 DataTypeOf 实现的编译期类型映射,以及用于在受支持 Rust 数据类型之间转换值的可复用工具。它适用于需要运行时类型元数据、typed empty、配置解析、值容器或结构化转换诊断的库。

设计目标

特性

数据类型系统

数据转换

安装

Cargo.toml 中添加:

[dependencies]
qubit-datatype = "0.2"

快速开始

数据类型使用

use qubit_datatype::{DataType, DataTypeOf};

let data_type = DataType::Int32;
assert_eq!(data_type.as_str(), "int32");

assert_eq!(i32::DATA_TYPE, DataType::Int32);
assert_eq!(String::DATA_TYPE, DataType::String);

数据转换

use std::time::Duration;

use qubit_datatype::{
    DataConversionResult,
    DataConverter,
    DataConverters,
    DataListConversionResult,
};

fn read_settings() -> DataConversionResult<(u16, bool, Duration)> {
    let port = DataConverter::from("8080").to::<u16>()?;
    let enabled = DataConverter::from("true").to::<bool>()?;
    let timeout = DataConverter::from("1500000000ns").to::<Duration>()?;

    Ok((port, enabled, timeout))
}

fn read_ports(values: &[String]) -> DataListConversionResult<Vec<u16>> {
    DataConverters::from(values).to_vec()
}

转换选项

use qubit_datatype::{
    BlankStringPolicy,
    DataConversionOptions,
    DataConverter,
};

let options = DataConversionOptions::default()
    .with_blank_string_policy(BlankStringPolicy::AsNone);

let value = DataConverter::from(" 8080 ")
    .to_with::<u16>(&options)
    .expect("port should convert");

assert_eq!(value, 8080);

支持的数据类型

完整变体见 DataType。 字符串形式由 as_str() 给出。

基础类型

日期、时间和结构化类型

API 参考

数据类型

转换

测试与代码覆盖率

本项目对数据类型解析、类型映射、转换成功路径、转换错误和边界条件保持全面测试覆盖。

运行测试

# 运行所有测试
cargo test

# 运行覆盖率报告
./coverage.sh

# 生成文本格式报告
./coverage.sh text

# 运行 CI 检查(格式化、clippy、测试、覆盖率、审计)
./ci-check.sh

覆盖率指标

详细的覆盖率统计请参见 COVERAGE.zh_CN.md

依赖项

运行时依赖:

许可证

Copyright (c) 2025 - 2026. Haixing Hu, Qubit Co. Ltd. All rights reserved.

根据 Apache 许可证 2.0 版("许可证")授权; 除非遵守许可证,否则您不得使用此文件。 您可以在以下位置获取许可证副本:

http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则根据许可证分发的软件 按"原样"分发,不附带任何明示或暗示的担保或条件。 有关许可证下的特定语言管理权限和限制,请参阅许可证。

完整的许可证文本请参阅 LICENSE

贡献

欢迎贡献!请随时提交 Pull Request。

开发指南

作者

胡海星 - Qubit Co. Ltd.

相关项目

Qubit 旗下的更多 Rust 库发布在 GitHub 组织 qubit-ltd

---

仓库地址:https://github.com/qubit-ltd/rs-datatype