refactor(setting): download 四键纯搬移到 setting/keys/download.rs(M292 1/2)

`keys.rs` 396 行、贴着全仓 400 行硬线,M292 要再加三个键 ⇒ 先纯搬移腾地方。

- 新增 `crates/core/src/setting/keys/download.rs`:并发 / 单源尝试次数 / 地区判定 /
  镜像偏好四条登记项,**逐字搬来**(唯一机械变换是 `.with(` 外壳换成 `vec![` 项、
  `))` 换成 `),` 定界符)。
- `keys.rs` 原地换成一行 `.with_all(download::specs())`,登记顺序不变。

逐字节证明(搬移块 28 行):
  git show HEAD~1:crates/core/src/setting/keys.rs | sed -n '109,136p' \
    | sed -e 's/^        \.with(/        /' -e 's/^        ))$/        ),/' > old.txt
  sed -n '/^    vec!\[$/,/^    \]$/p' keys/download.rs | sed '1d;$d' > new.txt
  diff -u old.txt new.txt; echo $?   # 0

两条归一化规则都是**行首精确缩进锚定**:块内 `.with(` 只出现在四个项首、`))` 只出现在
四个项尾(各 4 处,与项数一一对应),所以它们不可能顺手改掉块内的真实差异。
This commit is contained in:
AskaEth committed 2026-11-13 03:20:00 +08:00
1 parent bba98d5898
commit f4b5a73594
2 files changed
+55 -30

No files matched your search

+6 -30
View File
@@ -37,8 +37,9 @@ pub const JAVA_INSTALL_ROOT_UNSET: &str = "";
/// 必须同一份集合(setting 层不依赖 game 层),一致性由 `tests/setting/java_install_keys.rs` 守。
pub const JDK_VENDORS: &[&str] = &["temurin", "oracle", "microsoft", "zulu", "termux"];
/// 拆到各自文件的键域:中文字体 CDN(M168)/ 自更新(M161)/ 代理与 gh-proxy(M197)。
/// 主表各留一行登记。
/// 拆到各自文件的键域:中文字体 CDN(M168)/ 自更新(M161)/ 代理与 gh-proxy(M197)/
/// 下载调优四键(M292)。主表各留一行登记。
pub mod download;
pub mod font;
pub mod proxy;
pub mod update;
@@ -106,34 +107,9 @@ pub fn launcher_schema() -> SettingSchema {
AiPolicy::sensitive(),
"实例默认隔离模式:isolated(运行目录派生 versions/<版本 id>,D20 默认)/ shared(所有实例共用 .minecraft 根)",
))
.with(SettingSpec::int(
"download.concurrency",
crate::download::config::DEFAULT_MAX_CONCURRENCY as i64,
(1, crate::download::config::MAX_CONCURRENCY as i64),
AiPolicy::silent(),
"同时下载的文件数(1~64,出厂 8)。这是引擎真实持有的并发许可,不是展示值;越界或手改坏值按出厂值生效",
))
.with(SettingSpec::int(
"download.retry_limit",
crate::download::config::DEFAULT_MAX_ATTEMPTS_PER_SOURCE as i64,
(0, crate::download::config::MAX_ATTEMPTS_PER_SOURCE as i64),
AiPolicy::silent(),
"单个下载源的最多尝试次数(含首次;出厂 3)。0 与 1 都等于「只试一次、不重试」——0 是旧版 GUI 提供过的档位,保留合法但不代表「不下载」。换源不受此限",
))
.with(SettingSpec::enumeration(
"download.region",
"auto",
REGIONS,
AiPolicy::audited(),
"下载地区判定:auto(时区+语言+探测)/ cn / global",
))
.with(SettingSpec::enumeration(
"download.mirror_preference",
"auto",
MIRROR_PREFERENCES,
AiPolicy::audited(),
"镜像偏好:auto(健康度评分)/ official(官方源优先)/ mirror(镜像优先)",
))
// M292:下载调优四键(并发 / 单源尝试次数 / 地区 / 镜像偏好)搬到 [`download`]——主表这一行
// 代替原先四条 `.with(..)`,登记顺序与搬到那边之前逐项相同。
.with_all(download::specs())
// M197:代理与 gh-proxy 三键(`download.proxy_mode` / `proxy_url` / `gh_proxy`)搬到
// [`proxy`]——主表这一段的注释也一起搬过去,见那个模块的表格。
.with_all(proxy::specs())