【uom】 0 配置文件(Cargo.toml)
一、补充注释的源码
Rust 语言项目的 Cargo.toml 配置文件,描述了一个名为 “uom”(Units of Measurement)的库。
# 定义 Rust 包的元数据(package metadata)
[package]
# 包的名称(crate name)
name = "uom"
# 当前版本号(遵循语义化版本控制 SemVer)
version = "0.36.0"
# 使用的 Rust 版本(edition),这里使用 2018 版
edition = "2018"
# 最低支持的 Rust 编译器版本
rust-version = "1.65.0"
# 作者信息
authors = ["Mike Boutin <mike.boutin@gmail.com>"]
# 包的简短描述
description = "Units of measurement"
# 包的在线文档地址(docs.rs 自动生成)
documentation = "https://docs.rs/uom"
# 可选:项目主页 URL(此处未设置)
#homepage = ""
# 项目源代码仓库地址(GitHub)
repository = "https://github.com/iliekturtles/uom"
# README 文件路径(用于 crates.io 展示)
readme = "README.md"
# 关键词列表(用于 crates.io 搜索和分类)
keywords = ["units", "measurement", "SI", "dimensional-analysis", "no_std"]
# 包的分类(crates.io 分类)
categories = ["no-std", "science", "value-formatting"]
# 许可证:双许可证(Apache-2.0 或 MIT)
license = "Apache-2.0 OR MIT"
# 自动生成二进制目标(bin targets)
autobins = true
# 自动生成示例目标(example targets)
autoexamples = true
# 自动生成测试目标(test targets)
autotests = true
# 自动生成基准测试目标(benchmark targets)
autobenches = true# docs.rs 文档生成的特殊配置
[package.metadata.docs.rs]
# 构建文档时需要启用的 features(特性)
features = ["usize", "u32", "u64", "isize", "i32", "i64", # 整数类型支持"bigint", "biguint", # 大整数支持"rational", "rational32", "rational64", "bigrational", # 有理数支持"serde" # 序列化支持
]# 项目徽章(badges)配置
[badges]
# 维护状态:积极开发中
maintenance = { status = "actively-developed" }# 工作空间(workspace)配置(包含多个相关 crate)
[workspace]
# 工作空间成员(子 crate 或测试目录)
members = ["tests/feature_check", # 特性检查测试"uom-macros", # 宏 crate(可能包含过程宏)"tests/edition_check", # Rust edition 检查测试
]# 项目依赖(dependencies)
[dependencies]
# 数值特性支持(no_std 兼容,默认不启用 std 特性)
num-traits = { version = "0.2", default-features = false }
# 可选依赖:有理数支持(需手动启用)
num-rational = { version = "0.4", optional = true, default-features = false }
# 可选依赖:大整数支持(需要 std 特性)
num-bigint = { version = "0.4", optional = true, default-features = false, features = ["std"] }
# 可选依赖:复数支持(需要 std 特性)
num-complex = { version = "0.4", optional = true, default-features = false, features = ["std"] }
# 可选依赖:序列化支持(Serde)
serde = { version = "1.0", optional = true, default-features = false }
# 类型级数字库(用于编译时计算)
typenum = "1.13"# 开发依赖(dev-dependencies,仅用于测试和示例)
[dev-dependencies]
approx = "0.5" # 近似比较(浮点数误差容忍)
quickcheck = "1.0" # 基于属性的测试
serde_json = "1.0" # JSON 序列化测试
static_assertions = "1.1" # 编译时断言# 特性(features)配置
[features]
# 默认启用的特性
default = ["autoconvert", "f32", "f64", "si", "std"]
# 自动单位转换支持
autoconvert = []
# 整数类型支持(启用 rational-support 特性)
usize = ["rational-support"]
u8 = ["rational-support"]
u16 = ["rational-support"]
u32 = ["rational-support"]
u64 = ["rational-support"]
u128 = ["rational-support"]
isize = ["rational-support"]
i8 = ["rational-support"]
i16 = ["rational-support"]
i32 = ["rational-support"]
i64 = ["rational-support"]
i128 = ["rational-support"]
# 大整数支持
bigint = ["bigint-support"]
biguint = ["bigint-support"]
# 有理数支持
rational = ["rational-support"]
rational32 = ["rational-support"]
rational64 = ["rational-support"]
bigrational = ["bigint-support"]
# 复数支持
complex32 = ["complex-support"]
complex64 = ["complex-support"]
# 浮点数支持(无额外依赖)
f32 = []
f64 = []
# SI 单位制支持
si = []
# 标准库支持(启用 num-traits 的 std 特性)
std = ["num-traits/std"]
# Serde 序列化支持
serde = ["dep:serde", "num-rational?/serde", "num-bigint?/serde", "num-complex?/serde"]
# 已废弃的特性(try_from 功能现已默认启用)
try-from = []
# 已废弃的 Serde 特性别名(将在 v0.37.0 移除)
use_serde = ["serde"]
# 内部特性:有理数支持(启用 num-rational)
rational-support = ["num-rational"]
# 内部特性:大整数支持(启用 num-bigint 和 num-rational 的扩展)
bigint-support = ["num-bigint", "num-rational/num-bigint-std"]
# 内部特性:复数支持(启用 num-complex)
complex-support = ["num-complex"]# 示例程序配置(examples)
[[example]]
name = "base" # 基础用法示例
required-features = ["autoconvert", "f32", "si"] # 需要启用的特性[[example]]
name = "mks" # 米-千克-秒单位制示例
required-features = ["f32"][[example]]
name = "si" # SI 单位制示例
required-features = ["f32", "si"][[example]]
name = "unit" # 单位操作示例
required-features = ["f32", "si"]
[package] 部分
基础信息:
-
name: 包名 “uom”
-
version: 当前版本 0.36.0
-
edition: 使用 Rust 2018 版
-
rust-version: 最低支持的 Rust 版本 1.65.0
-
作者、描述、文档链接等元信息
特性:
-
支持无标准库环境(no_std)
-
关键词显示这是一个单位/测量库,支持 SI 单位制和维度分析
-
采用双许可证(Apache-2.0 或 MIT)
自动生成设置:
- 自动生成二进制、示例、测试和基准测试
[package.metadata.docs.rs] 部分
配置文档生成时启用的特性,包括各种数值类型支持(如 usize, u32, 大整数,有理数等)和 serde 支持。
[badges] 部分
显示项目处于积极维护状态。
[workspace] 部分
定义工作空间包含的成员:
-
特性检查测试
-
宏 crate
-
版本检查测试
依赖项
主依赖:
-
num-traits: 数值特性支持
-
可选的 num-rational/num-bigint/num-complex: 分别支持有理数、大整数和复数
-
typenum: 用于类型级编程
开发依赖:
- 用于测试的近似比较、快速检查、JSON 序列化等工具
[features] 部分
丰富的特性配置:
-
默认启用自动转换、f32/f64 浮点支持、SI 单位制和标准库
-
支持各种数值类型(整数、大整数、有理数、复数等)
-
特殊功能:
-
autoconvert: 自动单位转换
-
si: SI 单位制支持
-
serde: 序列化支持
-
已废弃的 try-from 特性
-
[[example]] 部分
定义的示例程序,展示不同功能组合的使用方式:
-
base: 基础用法
-
mks: 米-千克-秒单位制
-
si: SI 单位制
-
unit: 单位操作
这个配置文件表明 uom 是一个功能完善的单位计量库,支持多种数值类型和单位系统,可以在无标准库环境下使用,并提供了丰富的测试和示例。
我的类似代码更新如下
[package]
name = "quantity" # 必须是唯一的,全crates.io范围内
version = "0.0.1"
edition = "2024"
rust-version = "1.86.0" # 最低支持的 Rust 编译器版本
authors = ["liuyuan <375798574@qq.com>"]
description = "A type-safe library for handling physical quantities with units."# 包的简短描述
documentation = "https://docs.rs/quantity" # 包的在线文档地址(docs.rs 自动生成)
# 项目源代码仓库地址(GitHub)
repository = "https://github.com/liuyuan77/quantity"
readme = "README.md" # README 文件路径(用于 crates.io 展示)
keywords = ["quantity", "SI", "units", "no_std"] # 关键词列表,最多5个,用于 crates.io 搜索和分类
categories = ["no-std", "science", "value-formatting"] # 包的分类(crates.io 分类)
license = "MIT OR Apache-2.0" # 必须使用SPDX标识符# 自动生成二进制目标(bin targets)
autobins = true
# 自动生成示例目标(example targets)
autoexamples = true
# 自动生成测试目标(test targets)
autotests = true
# 自动生成基准测试目标(benchmark targets)
autobenches = true[dependencies]
typenum = "1.16"