这篇文章是实战性质的,也就是说原理部分较少,属于经验总结,rust对于模块的例子太少了。rust特性比较多(悲),本文的内容可能只是一部分,实现方式也不一定是这一种。
关于 rust 模块的相关内容,准确来说:怎么在源码中引用其他模块的内容。
- 关于
mod
、use
、as
这几个关键字(文件名) - 关于
mod.rs
文件 - 关于
self
、super
、crate
这几个路径关键字 worksapce
:本文不讨论,狭义上指的是cargo的[workspace]
部分: 可参见 The [workspace] sectionpackage
: 狭义上指的是cargo的[package]
部分,参见 The [package] sectioncrate
:参见下文 关于 create 的定义和 cargo 管理下的 cratemodule
:本文的重点, crate 里 会有多个 module,文本讨论重点就是 mod 之间相互引用的问题。
一、mod 关键字和 mod.rs 文件,其他普通文件 foo.rs 等
引用模块要搞清楚的:
- 是在哪里引用的,也就要引用的文件的位置
- 需要引用那个模块,跟这个文件的相对位置和绝对位置是什么
mod
关键字:
- 用来声明,表现方式是包裹一个代码块。也就是说这个代码块会成为一个单独的模块。
mod xxx { <rust语句块> }
:内部写 rust 语句 。见 例一#[path="...xxxx.rs"] mod xxx;
:使用 path 属性 ,使用见例二mod xxx { include!("...xxxx.rs&#