lnlidawei

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

[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 当前工程如何引用本地其他的工程模块

 

posted on 2025-02-05 14:54  lnlidawei  阅读(405)  评论(0)    收藏  举报