1. 项目目录结构
tree
a11/
├── Cargo.toml # 工作空间 + 根包配置文件(界面主程序)
├── src/ # 界面主程序源码(根包)
│ ├── main.rs # 界面入口
│ ├── app.rs # 主应用逻辑
│ ├── theme.rs # 主题样式
│ ├── windows/ # 窗口模块
│ │ ├── mod.rs
│ │ ├── main_window.rs # 主窗口
│ │ ├── settings_window.rs # 设置窗口
│ │ └── log_window.rs # 日志窗口
│ └── widgets/ # 自定义组件
│ ├── mod.rs
│ ├── status_indicator.rs # 状态指示灯
│ ├── traffic_meter.rs # 流量监控器
│ └── connection_list.rs # 连接列表
├── crates/ # 核心子库集合
│ ├── protocol/ # 协议库 - 网络通信协议实现
│ │ ├── Cargo.toml
│ │ └── src/lib.rs
│ ├── core/ # 核心库 - 业务逻辑核心
│ │ ├── Cargo.toml
│ │ └── src/lib.rs
│ ├── a11lib/ # 通用库 - 工具函数、共享代码
│ │ ├── Cargo.toml
│ │ └── src/
│ │ ├── lib.rs
│ │ ├── logging.rs
│ │ ├── config.rs
│ │ └── error.rs
│ ├── cli/ # CLI库 - 命令行界面
│ │ ├── Cargo.toml
│ │ └── src/lib.rs
│ └── tray/ # 系统托盘库
│ ├── Cargo.toml
│ └── src/lib.rs
├── examples/ # 示例程序
│ ├── learn_egui.rs # EGUI学习示例
│ └── tray_example.rs # 托盘功能示例
└── resources/ # 全局资源文件
├── icon.ico # Windows图标
├── icon.png # Linux/macOS图标
└── fonts/ # 字体文件目录
└── default.ttf # 默认字体
2. 各库功能说明
2.1 协议库 (protocol)
- 职责:处理所有网络通信协议
- 功能 :
- 数据包封装与解析
- 协议版本管理
- 加密解密接口
- 网络连接建立与维护
2.2 核心库 (core)
- 职责:实现业务核心逻辑
- 功能 :
- VPN连接管理
- 用户认证与授权
- 数据路由转发
- 配置管理
- 状态监控
2.3 通用库 (a11lib)
- 职责:提供跨模块共享功能
- 功能 :
- 日志系统
- 错误处理
- 配置文件读写
- 跨平台工具函数
- 加密工具封装
2.4 CLI库 (cli)
- 职责:命令行交互界面
- 功能 :
- 命令行参数解析
- 交互式命令处理
- 状态查询命令
- 配置文件生成
2.5 系统托盘库 (tray)
- 职责:系统托盘功能
- 功能 :
- 托盘图标显示
- 右键菜单管理
- 后台运行支持
- 快速连接/断开
- 窗口显示/隐藏
3. 开发环境搭建
3.1 初始化项目
bash
# 1. 创建项目(自动生成 Cargo.toml 和 src/)
cargo new a11
3.2 配置文件创建
- 根目录 Cargo.toml:同时作为工作空间和根包配置
- 各子库 Cargo.toml:配置各自依赖和功能特性
3.3 资源文件准备
- 应用图标(Windows: .ico, Linux/macOS: .png)
- 字体文件(支持多语言显示)
- 主题样式文件
4. 运行与测试
4.1 开发阶段
bash
# 运行学习示例
cargo run --example learn_egui
# 运行界面主程序
cargo run
# 运行CLI应用
cargo run -p cli -- --help
4.2 构建阶段
bash
# 开发构建
cargo build --workspace
# 发布构建(优化性能)
cargo build --release
# 体积优化构建
cargo build --profile release-small
4.3 测试阶段
bash
# 运行所有测试
cargo test --workspace
# 运行特定库测试
cargo test -p core
cargo test -p protocol
5. 功能模块依赖关系
src 界面主程序
core
a11lib
tray
cli
protocol
6. 关键配置说明
6.1 编译配置
- release:生产环境优化(LTO优化、代码合并)
- release-small:体积优先(优化二进制大小)
6.2 依赖管理
- 内部依赖:通过workspace统一管理路径
- 外部依赖:统一版本号,避免冲突
6.3 平台支持
- Windows:原生API支持、Wintun驱动
- Linux:TUN/TAP设备、daemonize支持
- macOS:UTUN控制、权限管理
7. 开发学习路径
阶段一:基础准备
- 熟悉Rust语言基础
- 理解异步编程(tokio)
- 掌握Cargo工作空间
阶段二:组件学习
- 从examples/learn_egui.rs开始
- 理解EGUI控件和布局
- 练习状态管理和事件处理
阶段三:功能集成
- 连接core库实现真实VPN功能
- 添加配置保存和加载
- 实现系统托盘集成
阶段四:优化完善
- 添加实时图表
- 实现主题切换
- 优化性能和用户体验
8. 远程办公特性
8.1 安全性
- 端到端加密通信
- 证书认证机制
- 会话管理
8.2 稳定性
- 自动重连机制
- 断线保护
- 流量控制
8.3 易用性
- 一键连接
- 服务器快速切换
- 实时状态反馈
- 系统托盘快速操作
8.4 跨平台
- Windows/Linux/macOS统一体验
- 配置同步
- 多语言支持