ru_single_init::find_bean_rusingle() 和rusingle目录下mod.rs如何优化 包路径
18:05
Read 7 files, Browsed 1 folder, Searched files 2 times
分析结果
我发现了以下几个问题:
问题清单
重复定义:mod.rs 和 ru_single_init.rs 都定义了 find_bean_rusingle()、register_bean_rusingle() 和 SINGLE_BEAN_NAME
可见性错误:ru_single_init.rs 中引用 crate::rudomain::rusingle::SINGLE_BEAN_NAME,但 mod.rs 中 SINGLE_BEAN_NAME 不是 pub 的
路径混乱:测试文件同时使用 rusingle::find_bean_rusingle() 和 ru_single_init::find_bean_rusingle()
优化方案
参照项目中 rudi/rucontainer/ 的模式:mod.rs 只做模块声明 + re-export,实现集中到 ru_single_init.rs。
下面是具体修改:
1. 改造 ru_single_init.rs —— 成为唯一实现文件
Edited 1 file
2. 简化 mod.rs —— 只做模块声明 + re-export
Edited 1 file
3. 简化 rudomain_test.rs —— 使用统一路径
Edited 1 file
Let me check if there are any other files that reference these modules to ensure the full refactoring is complete.
Read 2 files, Searched files 1 time
Good catch — I found an additional bug while tracing through the code. Let me re-examine the ruregister API.
Looking at ruregister.rs:
register() → 注册多例(每次创建新实例)
register_singleton() → 注册单例
当前 mod.rs 用的是 register(多例),但 ru_single_init.rs 用的是 register_single(拼写错误,实际不存在此函数)。正确的应该是 register_singleton,因为 RuSingle 是单例模式。
我来更新 ru_single_init.rs 的 diff,修正为 register_singleton:
Edited 1 file
完整优化总结
当前问题一览
# 问题 位置 严重性
1 重复定义 mod.rs 和 ru_single_init.rs 都定义了相同的函数和常量 🔴 高
2 路径错误 ru_single_init.rs 引用 crate::rudomain::rusingle::SINGLE_BEAN_NAME,但常量不是 pub 的 🔴 高
3 注册方式错误 mod.rs 用 register(多例),但单例应用 register_singleton 🔴 高
4 拼写错误 ru_single_init.rs 调用了不存在的 register_single(应为 register_singleton) 🔴 高
5 API 路径不统一 测试文件同时使用 rusingle:: 和 ru_single_init:: 访问 🟡 中
6 常量命名不规范 SINGLE_BEAN_NAME 应为 SINGLE_BEAN_NAME(Rust 常量风格) 🟡 中
优化后的架构
Plain Text
rusingle/
├── mod.rs ← 模块入口:声明子模块 + re-export
└── ru_single_init.rs ← 唯一实现:RuSingle 结构体 + 注册/查找函数
优化前调用方式:
Rust
// 方式1:通过父模块
rusingle::find_bean_rusingle()
// 方式2:通过子模块(路径冗长)
ru_single_init::find_bean_rusingle()
优化后调用方式(统一):
Rust
// 干净的统一路径
rusingle::find_bean_rusingle()
rusingle::RuSingle::new()
修改涉及的文件
ru_single_init.rs — 成为唯一实现文件,包含 RuSingle 结构体、常量和函数
mod.rs — 简化为纯入口,只做 pub mod 声明和 pub use re-export
rudomain_test.rs — 去除冗余 import 和重复测试用例
请 Review 并 Accept 以上三个 diff 以应用修改。