[rust]:当前的包(当前工程)“引用”本地其他的包(本地其他工程)
一、当前工程引用本地其他工程
在 Rust 中,如果你想在一个工程中引用另一个本地工程的模块,可以使用几种不同的方法。这些方法取决于你的项目结构和你的开发环境。下面是一些常见的方法:
一、 使用 Cargo.toml 中的 [dependencies] 字段
1、 如果你的项目是一个库(例如,你希望通过 cargo build 构建一个 crate),你可以在 Cargo.toml 文件中将另一个本地 crate 作为依赖项添加。例如,如果你的项目结构如下:
/my_project
/src
main.rs
/lib_a
/src
lib.rs
Cargo.toml
2、 你可以在 my_project/Cargo.toml 中添加如下依赖:
[dependencies]
lib_a = { path = "../lib_a" }
3、 然后在 main.rs 中引用 lib_a 的模块:
extern crate lib_a;
use lib_a::some_module;
二、 使用 Cargo.toml 中的 [workspace] 和 [dependencies] 字段
1、 如果你有多个相关的 crate,并希望将它们作为一个工作空间管理,可以在根目录下的 Cargo.toml 中使用 [workspace] 配置,然后在子项目的 Cargo.toml 中通过路径依赖引用它们。例如:
# 在根目录的 Cargo.toml 中
[workspace]
members = ["my_project", "lib_a"]
2、 在每个子项目的 Cargo.toml 中使用路径依赖:
# 在 my_project/Cargo.toml 中
[dependencies]
lib_a = { path = "../lib_a" }
三、 使用 cargo build 和 cargo run 的工作区模式
1、 当你在一个包含多个 crate 的工作区中时,你可以直接使用 cargo build 和 cargo run 在任何子目录中构建和运行项目,而无需修改 Cargo.toml。例如:
cd my_project/lib_a
cargo build
cd ../my_project
cargo run
2、 这样,即使不修改 Cargo.toml,你也可以构建和运行依赖于其他 crate 的项目。
四、 使用 cargo package 和 cargo install(对于二进制项目)
1、 如果你正在开发一个可执行文件(binary),并且希望在其他项目中引用它的某个模块,你可以首先将你的二进制项目打包为一个库(通过修改其类型为 library),然后将其安装到本地:
cd my_binary_project
cargo package
cargo install --path . --force # 注意这会安装到 ~/.cargo/bin 或指定路径,可能需要手动调整 PATH 或在项目中引用正确的路径。
2、 然后在其他项目中通过路径依赖或直接在代码中引用安装后的库。但这种方法通常不推荐用于二进制项目,因为它涉及到将二进制项目转变为库并安装到本地,这在大多数情况下不是必须的。更常见的是将二进制项目转变为库项目并通过路径依赖来使用。
五、 结论
对于大多数情况,使用路径依赖(方法 1 和方法 2)是最直接和常见的方法。确保你的项目结构清晰,并通过适当的方式配置 Cargo.toml 来管理依赖关系。如果你正在构建一个大型项目,使用工作区(workspace)是一个很好的组织方式。
二、参考文档
1、 百度搜索 - 搜索问题:rust 当前工程如何引用本地其他的工程模块
本文由 lnlidawei 原创、整理、转载,本文来自于【博客园】; 整理和转载的文章版权归属【原创作者】; 转载或引用时【请保留文章的来源信息】:https://www.cnblogs.com/lnlidawei/p/18699460

浙公网安备 33010602011771号