# 90-1 参考资料：文件树 Rust 生态调研

是的，Rust生态中有多个类似VSCode文件树的实现，涵盖**终端(TUI)组件**、**GUI组件**和**独立应用**三类，均支持文件/目录的层级展示、折叠展开与交互操作。

---

### 一、终端(TUI)领域：VSCode风格文件树组件/应用

#### 1. filetree (ft) - 最接近VSCode文件树的TUI实现
- 仓库：https://github.com/nyanko3141592/filetree
- 版本：v0.3.5（2026年3月）
- 核心特性：
  - VSCode风格界面，支持文件/目录层级展示与折叠
  - Git状态集成（修改、未跟踪、忽略文件颜色标记）
  - Vim键绑定(hjkl导航)与鼠标支持
  - 系统剪贴板集成，支持文件复制/剪切/粘贴
  - 可通过cargo直接安装：`cargo install filetree`

#### 2. fileview - 轻量级VSCode风格文件树TUI
- 仓库：https://crates.io/crates/fileview
- 版本：v1.8.1（2026年2月）
- 特点：
  - 极简设计，启动迅速，无需配置
  - 支持图像预览(Kitty/iTerm2/Sixel)与语法高亮
  - 模糊查找功能，快速定位文件
  - 多文件选择与批量操作

#### 3. 通用TUI文件树组件库
| 库名称 | 适用框架 | 核心特点 |
|--------|----------|----------|
| tui-file-explorer | Ratatui | 双面板布局，独立左右浏览窗格，Tab切换 |
| tui-tree-widget | Ratatui | 通用树视图组件，支持自定义数据结构 |
| ratatui-explorer | Ratatui | 高度可定制，支持键盘输入处理 |
| ratkit | Ratatui | 包含树视图在内的综合组件库，支持可调整大小的分割面板 |

---

### 二、GUI领域：Rust图形界面文件树组件

#### 1. iced_file_tree - Iced GUI框架的文件树组件
- 仓库：https://crates.io/crates/iced_file_tree
- 适配Iced跨平台GUI库（受Elm启发）
- 支持文件系统导航与层级展示，可集成到桌面应用中

#### 2. Tauri应用中的文件树实现
- Tauri（Rust+WebView）可通过Rust后端+前端组件实现VSCode风格文件树
- 后端：使用`std::fs::read_dir`读取目录内容，返回`(path, is_directory)`元组
- 前端：创建嵌套HTML列表(ul/li)表示文件夹结构，添加VSCode风格图标与交互

---

### 三、使用场景与选择建议

| 使用场景 | 推荐选择 | 理由 |
|----------|----------|------|
| 快速体验VSCode风格文件树 | filetree(ft) | 开箱即用，VSCode界面风格，Git集成 |
| 集成到Ratatui终端应用 | tui-file-explorer | 专为Ratatui设计，双面板布局，功能完善 |
| 构建跨平台GUI应用 | iced_file_tree | 适配Iced框架，原生GUI体验 |
| 开发Tauri桌面应用 | 自定义实现 | 结合Rust后端与Web前端，灵活性最高 |

---

### 四、快速上手示例

使用filetree(ft)快速体验VSCode风格文件树：
```bash
# 安装
cargo install filetree

# 运行（当前目录）
ft

# 常用操作
hjkl - 导航（Vim风格）
g/G - 跳至顶部/底部
Enter - 打开文件/文件夹
dd - 删除文件/文件夹
yy - 复制，p - 粘贴
:q - 退出
```

如果需要将文件树组件集成到 Rust 项目中，建议根据应用类型（终端/GUI）选择对应的组件库，或参考 filetree 的实现方式进行定制开发。
