面试题答案
一键面试1. 工作空间结构
my_workspace/
├── Cargo.toml
├── subproject_a/
│ └── Cargo.toml
├── subproject_b/
│ └── Cargo.toml
└── subproject_c/
└── Cargo.toml
2. 配置 Cargo.toml
文件
- 根目录
Cargo.toml
[workspace] members = [ "subproject_a", "subproject_b", "subproject_c" ]
subproject_b/Cargo.toml
[package] name = "subproject_b" version = "0.1.0" [dependencies] external_lib = "1.2.3" # 子项目B需要的外部库版本
subproject_c/Cargo.toml
[package] name = "subproject_c" version = "0.1.0" [dependencies] external_lib = { version = "1.3.0", package = "external_lib_c" } # 子项目C需要的外部库版本,通过package指定不同的包名
subproject_a/Cargo.toml
[package] name = "subproject_a" version = "0.1.0" [dependencies] subproject_b = { path = "../subproject_b" }
3. 实际应用场景举例
- 图像处理工作空间:假设在一个图像处理的Cargo工作空间中,有三个子项目。
image_editor
(子项目A):负责图像的基本编辑功能,依赖image_processing_core
(子项目B)进行核心图像处理算法。image_processing_core
(子项目B):依赖image_lib v1.2.3
库进行图像格式处理和基础操作。image_filter
(子项目C):实现图像滤镜功能,需要image_lib v1.3.0
库,因为新版本增加了一些滤镜相关的新特性。通过上述配置方式,可以确保各个子项目使用各自所需版本的外部库,同时保证整个工作空间的正常运行。