基于 Rust + Everything SDK 的极客级垃圾文件清理工具,利用 Everything 的 NTFS 索引实现秒级全盘扫描。
everything-cleaner/
├── assets/Everything64.dll # 捆绑的 Everything SDK DLL
├── crates/
│ ├── cleaner-core/ # 核心库(FFI + 模型 + 删除操作)
│ ├── scanner/ # 扫描器集合
│ │ ├── vs.rs # Visual Studio 缓存清理
│ │ └── search.rs # 通用 Everything 搜索前端
│ ├── cleaner-ui/ # egui 桌面 GUI
│ └── Cargo.toml
前置条件: 确保 Everything 桌面应用正在运行。
cargo run --release清理 .vs/、ipch 和 obj/ 目录(C++ / C# / CMake 项目)。
扫描流程:
- Everything 全盘搜索
folder:.vs、folder:ipch、folder:obj - 精确校验目录名完全匹配(非子串匹配),避免误伤
- 每种目标使用独立校验函数:
.vs/— 同级目录含.sln/.slnx/.csproj/.vcxproj/CMakeLists.txt,或文件夹内存在VSWorkspaceState.jsonipch— 同级含.sln(旧版 VS),或父目录名为.vscode/vscode-cpptools(VSCode C++ 扩展);位于.vs/内的不重复收集obj/— 同级含.csproj/.vcxproj
- 目录大小优先取 Everything 返回值,无效(-1)则降级为递归计算
自由搜索文件/文件夹,支持正则、路径匹配、精准/模糊匹配。结果展示在统一列表中,可勾选后删除。
实现 Cleaner trait 即可新增扫描器:
pub trait Cleaner: Send + Sync {
fn name(&self) -> &'static str;
fn description(&self) -> &'static str;
fn scan(&self) -> Vec<ScanResult>;
fn scan_with_progress(&self, tx: mpsc::Sender<String>) -> Vec<ScanResult>;
}在 scanner/src/lib.rs 中导出后,UI 自动发现。
- 语言: Rust(edition 2021)
- GUI: eframe / egui
- 搜索引擎: Everything SDK(C FFI,RAW 函数指针调用)
- Windows API:
windows0.58 crate(IFileOperation/DeleteFileW)
MIT