当前位置: 首页 > news >正文

【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"

相关文章:

  • 【DB2】逻辑导出导入注意事项
  • mongoose的介绍,连接数据库
  • 引力透镜效应添加光线弯曲程度可视化层的MATLAB代码
  • Neo4j 的 `SET n += $properties` 语法详解
  • 2025年04月29日Github流行趋势
  • OpenCV 图形API(72)图像与通道拼接函数-----根据指定的方式翻转图像(GMat)函数 flip()
  • zynq上的裸机lwip网络性能测试iperf使用心得
  • UI-TARS论文解读 并提供镜像
  • Elasticsearch:ES|QL lookup JOIN 介绍 - 8.18/9.0
  • 水污染检测数据集VOC+YOLO格式2487张4类别
  • Tshark:强大的命令行网络抓包与分析工具
  • Electron读取本地文件
  • kafka消息的顺序性如何保持一致的
  • Windows 10系统中找回MySQL 8的root密码
  • 智能电子白板的设计与实现:从硬件选型到软件编程
  • python初学
  • 基于Spring Boot 电商书城平台系统设计与实现(源码+文档+部署讲解)
  • python celery框架结合django的使用
  • 深度剖析 RocketMQ 5.0 之架构解析:云原生架构如何支撑多元化场景?
  • 浅析通用文字识别技术在档案管理中的未来发展趋势
  • 上海科创的三种品格
  • 国家发改委下达今年第二批810亿超长期特别国债资金,支持消费品以旧换新
  • 光明网评论员:手机“二次放号”,需要重新确认“你是你”
  • 绵阳造AI机器狗参与警务工作,演练中辅助民警控制“嫌疑人员”
  • 央行回应美债波动:单一市场、单一资产变动对我国外储影响总体有限
  • 新剧|《淮水竹亭》明开播:前作扑街,本作能否改命