182 lines
6.9 KiB
TOML
182 lines
6.9 KiB
TOML
# ApsisRS Rust workspace root.
|
|
#
|
|
# The workspace resolves without any external dependency so that the
|
|
# numerical kernels stay self-contained and auditable. Every member crate
|
|
# is unpublished.
|
|
#
|
|
# ApsisRS Rust 工作区根。
|
|
#
|
|
# 工作区在没有任何外部依赖的情况下解析,使各数值内核保持自包含且可
|
|
# 审计。每个成员 crate 都不发布。
|
|
|
|
[workspace]
|
|
resolver = "2"
|
|
|
|
members = [
|
|
# foundation / 基础层
|
|
"crates/foundation/apsis-core",
|
|
"crates/foundation/apsis-units",
|
|
"crates/foundation/apsis-math",
|
|
"crates/foundation/apsis-macros",
|
|
|
|
# physics / 物理层
|
|
"crates/physics/apsis-time",
|
|
"crates/physics/apsis-leap",
|
|
"crates/physics/apsis-coord",
|
|
"crates/physics/apsis-geodesy",
|
|
"crates/physics/apsis-frames",
|
|
|
|
# orbit / 轨道层
|
|
"crates/orbit/apsis-tle",
|
|
"crates/orbit/apsis-sgp4",
|
|
"crates/orbit/apsis-kepler",
|
|
"crates/orbit/apsis-ephemeris",
|
|
"crates/orbit/apsis-maneuver",
|
|
"crates/orbit/apsis-orbit",
|
|
|
|
# rf / 射频层
|
|
"crates/rf/apsis-rf",
|
|
"crates/rf/apsis-antenna",
|
|
"crates/rf/apsis-doppler",
|
|
"crates/rf/apsis-atmosphere",
|
|
"crates/rf/apsis-noise",
|
|
"crates/rf/apsis-interference",
|
|
"crates/rf/apsis-link",
|
|
|
|
# network / 网络层
|
|
"crates/network/apsis-constellation",
|
|
"crates/network/apsis-coverage",
|
|
"crates/network/apsis-access",
|
|
"crates/network/apsis-topology",
|
|
"crates/network/apsis-isl",
|
|
"crates/network/apsis-routing",
|
|
"crates/network/apsis-handover",
|
|
"crates/network/apsis-mesh",
|
|
|
|
# ops / 运行层
|
|
"crates/ops/apsis-resource",
|
|
"crates/ops/apsis-task",
|
|
"crates/ops/apsis-scheduler",
|
|
"crates/ops/apsis-conflict",
|
|
"crates/ops/apsis-schedule",
|
|
|
|
# sim / 仿真层
|
|
"crates/sim/apsis-sim-engine",
|
|
"crates/sim/apsis-scenario",
|
|
"crates/sim/apsis-event",
|
|
"crates/sim/apsis-output",
|
|
"crates/sim/apsis-sim",
|
|
|
|
# facade / 门面层
|
|
"crates/apsis-rs",
|
|
]
|
|
|
|
[workspace.package]
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
rust-version = "1.85"
|
|
license = "GPL-3.0-or-later"
|
|
authors = ["ApsisRS contributors"]
|
|
|
|
[workspace.lints.rust]
|
|
unsafe_code = "forbid"
|
|
missing_docs = "deny"
|
|
|
|
[workspace.lints.clippy]
|
|
# The pedantic group is enabled, with the exceptions below. Each exception is
|
|
# a property of the domain rather than a relaxation of care, so a change that
|
|
# introduces a lint outside this list still fails the build.
|
|
# 启用 pedantic 组,例外见下。每条例外都是领域属性而非放松要求,故引入不在
|
|
# 此列表中的 lint 仍会使构建失败。
|
|
pedantic = { level = "warn", priority = -1 }
|
|
|
|
# The numeric kernels convert between an index or a count and a float, and
|
|
# between signed and unsigned values, at points where the range is already
|
|
# known, so the cast cannot lose information in practice. `as` is the idiom of
|
|
# the domain and a `try_from` chain would obscure the arithmetic.
|
|
# 数值内核在下标或计数与浮点数之间、以及有符号与无符号值之间转换,这些位置
|
|
# 的取值范围已知,故实践中不会丢失信息。`as` 是该领域的惯用法,而一串
|
|
# `try_from` 会使算式变得难读。
|
|
cast_precision_loss = "allow"
|
|
cast_possible_truncation = "allow"
|
|
cast_sign_loss = "allow"
|
|
cast_possible_wrap = "allow"
|
|
|
|
# Mathematical notation uses short and similar names, such as `theta` and
|
|
# `theta_0`, and a long algorithm reads better in one piece than split.
|
|
# 数学记号使用简短且相近的名称,如 `theta` 与 `theta_0`;长算法整体成篇比
|
|
# 拆开更易读。
|
|
similar_names = "allow"
|
|
many_single_char_names = "allow"
|
|
too_many_lines = "allow"
|
|
|
|
# A test may compare two floats exactly when both sides are the same
|
|
# expression evaluated twice, which is what a determinism test wants.
|
|
# 当两侧是同一次表达式求值两次所得时,测试可以精确比较浮点数,这正是确定性
|
|
# 测试所需。
|
|
float_cmp = "allow"
|
|
|
|
# The condition under which a function returns an error is stated in the doc
|
|
# comment itself, as "Returns an error when ..." followed by its Chinese
|
|
# counterpart, so the separate `# Errors` heading the lint wants would only
|
|
# repeat that sentence.
|
|
# 函数返回错误的条件已写在文档注释中,即 “Returns an error when ...” 及其中文
|
|
# 对应,故该 lint 要求的独立 `# Errors` 标题只会重复该句。
|
|
missing_errors_doc = "allow"
|
|
|
|
# Numeric literals follow the grouping of the quantity they express, such as
|
|
# the digits of a reference value, rather than a fixed width. The style lint
|
|
# would force a regrouping that obscures the source of a value.
|
|
# 数值字面量按其所表达量的分组来分隔,例如某参考值的各位数字,而非固定
|
|
# 宽度。风格 lint 会强制重新分组,从而模糊某值的来源。
|
|
inconsistent_digit_grouping = "allow"
|
|
unreadable_literal = "allow"
|
|
|
|
[workspace.dependencies]
|
|
apsis-core = { path = "crates/foundation/apsis-core" }
|
|
apsis-units = { path = "crates/foundation/apsis-units" }
|
|
apsis-math = { path = "crates/foundation/apsis-math" }
|
|
apsis-macros = { path = "crates/foundation/apsis-macros" }
|
|
|
|
apsis-time = { path = "crates/physics/apsis-time" }
|
|
apsis-leap = { path = "crates/physics/apsis-leap" }
|
|
apsis-coord = { path = "crates/physics/apsis-coord" }
|
|
apsis-geodesy = { path = "crates/physics/apsis-geodesy" }
|
|
apsis-frames = { path = "crates/physics/apsis-frames" }
|
|
|
|
apsis-tle = { path = "crates/orbit/apsis-tle" }
|
|
apsis-sgp4 = { path = "crates/orbit/apsis-sgp4" }
|
|
apsis-kepler = { path = "crates/orbit/apsis-kepler" }
|
|
apsis-ephemeris = { path = "crates/orbit/apsis-ephemeris" }
|
|
apsis-maneuver = { path = "crates/orbit/apsis-maneuver" }
|
|
apsis-orbit = { path = "crates/orbit/apsis-orbit" }
|
|
|
|
apsis-rf = { path = "crates/rf/apsis-rf" }
|
|
apsis-antenna = { path = "crates/rf/apsis-antenna" }
|
|
apsis-doppler = { path = "crates/rf/apsis-doppler" }
|
|
apsis-atmosphere = { path = "crates/rf/apsis-atmosphere" }
|
|
apsis-noise = { path = "crates/rf/apsis-noise" }
|
|
apsis-interference = { path = "crates/rf/apsis-interference" }
|
|
apsis-link = { path = "crates/rf/apsis-link" }
|
|
|
|
apsis-constellation = { path = "crates/network/apsis-constellation" }
|
|
apsis-coverage = { path = "crates/network/apsis-coverage" }
|
|
apsis-access = { path = "crates/network/apsis-access" }
|
|
apsis-topology = { path = "crates/network/apsis-topology" }
|
|
apsis-isl = { path = "crates/network/apsis-isl" }
|
|
apsis-routing = { path = "crates/network/apsis-routing" }
|
|
apsis-handover = { path = "crates/network/apsis-handover" }
|
|
apsis-mesh = { path = "crates/network/apsis-mesh" }
|
|
|
|
apsis-resource = { path = "crates/ops/apsis-resource" }
|
|
apsis-task = { path = "crates/ops/apsis-task" }
|
|
apsis-scheduler = { path = "crates/ops/apsis-scheduler" }
|
|
apsis-conflict = { path = "crates/ops/apsis-conflict" }
|
|
apsis-schedule = { path = "crates/ops/apsis-schedule" }
|
|
|
|
apsis-sim-engine = { path = "crates/sim/apsis-sim-engine" }
|
|
apsis-scenario = { path = "crates/sim/apsis-scenario" }
|
|
apsis-event = { path = "crates/sim/apsis-event" }
|
|
apsis-output = { path = "crates/sim/apsis-output" }
|
|
apsis-sim = { path = "crates/sim/apsis-sim" }
|