qubit-argument

Argument and state validation helpers for Rust applications

Rust CI Coverage Crates.io Rust License

面向 Rust 的参数和状态校验工具库。

概述

Qubit Argument 提供扩展 trait 和检查函数,用于校验函数参数、配置值、索引、范围和运行时状态。它使用 Rust 的 trait extension 模式表达可读的校验链,并统一返回轻量的 ArgumentError

设计目标

特性

数值校验

字符串校验

集合和 Option 校验

状态和边界检查

安装

Cargo.toml 中添加:

[dependencies]
qubit-argument = "0.3"

快速开始

数值和字符串校验

use qubit_argument::{
    ArgumentResult,
    NumericArgument,
    StringArgument,
};

fn validate_user(age: i32, username: &str) -> ArgumentResult<()> {
    age.require_in_closed_range("age", 0, 150)?;
    username
        .require_non_blank("username")?
        .require_length_in_range("username", 3, 20)?;
    Ok(())
}

集合校验

use qubit_argument::{
    ArgumentResult,
    CollectionArgument,
};

fn validate_tags(tags: &[String]) -> ArgumentResult<&[String]> {
    tags.require_non_empty("tags")?
        .require_length_at_most("tags", 10)
}

状态和边界检查

use qubit_argument::{
    ArgumentResult,
    check_bounds,
    check_state_with_message,
};

fn read_range(offset: usize, length: usize, total: usize) -> ArgumentResult<()> {
    check_state_with_message(total > 0, "total length must be positive")?;
    check_bounds(offset, length, total)
}

API 参考

Traits

错误类型

函数

测试与代码覆盖率

本项目对成功路径、失败路径、边界条件和代表性类型实例保持全面测试覆盖。

运行测试

# 运行所有测试
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-argument