Module 在rust中使用父目录中的模块

Module 在rust中使用父目录中的模块,module,rust,Module,Rust,是否有可能以这种方式构建一个生锈项目 目录结构: src ├── a │   └── bin1.rs ├── b │   ├── bin2.rs └── common ├── mod.rs 从Cargo.toml: [[bin]] name = "bin1" path = "src/a/bin1.rs" [[bin]] name = "bin2" path = "src/b/bin2.rs" 我希望能够使用bin1.rs和bin2.rs中的common模块。可以在导入之前添加路径属

是否有可能以这种方式构建一个生锈项目

目录结构:

src
├── a
│   └── bin1.rs
├── b
│   ├── bin2.rs
└── common
    ├── mod.rs
从Cargo.toml:

[[bin]]
name = "bin1"
path = "src/a/bin1.rs"

[[bin]]
name = "bin2"
path = "src/b/bin2.rs"
我希望能够使用
bin1.rs
bin2.rs
中的
common
模块。可以在导入之前添加路径属性:

#[path="../common/mod.rs"]
mod code;

有没有办法让
bin1.rs
bin2.rs
使用
common
而不必硬编码路径?

建议在二进制文件之间共享代码的方法是使用
src/lib.rs
文件。这两个二进制文件都可以作为单独的板条箱自动访问通过该
lib.rs
文件访问的任何内容

然后您只需定义一个
mod common
src/lib.rs
文件中。如果您的板条箱被称为“我的板条箱”
,您的二进制文件将能够与

use my_crate::common::Foo;

这对我帮助很大。我还看到了类似于
使用板条箱::…
的内容,我认为它可能指的是“无论根板条箱是什么”,但它返回一个编译器错误“根中没有X”(其中X是我的模块名)。那么,“根”板条箱是什么呢?你应该把
lib.rs
main.rs
看作是两个完全不同的板条箱的根。当访问同一板条箱内的内容时,您使用
使用板条箱:
,当从
main.rs
访问
库中的内容时,您使用
使用我的板条箱:
。无法从
lib.rs
板条箱中的
main.rs
访问某些内容。