test(presenter)+fix(i18n): 淘汰策略与共享缓存解耦;注释里的 ASCII 引号

- prune() 抽成独立函数:全局缓存被所有用例共享,谁往里面灌 240+ 条都会顺手清掉
  别的用例刚缓存的键(实测:并行跑时 the_second_identical_refresh_... 假红)。淘汰
  策略改在本地 Cache 上测,两条判据各自确定;
- clippy -D warnings:from_ref 代替 &[x.clone()];
- model.rs 注释里的 "原因 + OS 原文" 用 ASCII 引号 → 页面字面量白名单守门报红,改
  中文引号;core/events 的三处文档失真登记为 TowerFinding(scope 外);
- 出处文案口径:TooLarge 的 detail 只留数字(presenter 不产人读文案)。
This commit is contained in:
AskaEth committed 2026-11-11 16:52:47 +08:00
1 parent 0b6b8f0a62
commit dd9962e610
11 files changed
+127 -64

No files matched your search

@@ -56,10 +56,7 @@ const PAGE_SOURCES: [(&str, &str); 12] = [
("instances/text.rs", include_str!("../text.rs")),
// M251:存档 / 截图一族从 text.rs 拆出(那边越过 400 行)——新文件必须一起扫,
// 否则那四句缩略图文案会被当成「死 key」。
(
"instances/text/saves.rs",
include_str!("../text/saves.rs"),
),
("instances/text/saves.rs", include_str!("../text/saves.rs")),
(
"instances/launch_args.rs",
include_str!("../launch_args.rs"),
@@ -80,10 +77,7 @@ const PAGE_SOURCES: [(&str, &str); 12] = [
include_str!("../saves/model.rs"),
),
// M251:截图缩略图墙
(
"instances/saves/wall.rs",
include_str!("../saves/wall.rs"),
),
("instances/saves/wall.rs", include_str!("../saves/wall.rs")),
];
/// 页面五件套里**允许出现的字符串字面量**(凡是带 ASCII 单词的都必须在这张表里)。
@@ -346,7 +340,10 @@ fn every_english_literal_in_the_page_sources_is_whitelisted() {
.map(|(_, source)| *source)
.unwrap_or_else(|| panic!("PAGE_SOURCES 里没有 {name}:拆文件之后忘了登记?"))
};
assert!(source("instances.rs").contains("Texts::of("), "实例页没有从 Texts 取词");
assert!(
source("instances.rs").contains("Texts::of("),
"实例页没有从 Texts 取词"
);
assert!(
source("instances.rs").contains("Header::new(texts.title())"),
"页头标题必须是词表里的那条(`Header::new` 里写死字符串 = 中文界面上顶着英文标题)"