假如程序有多个 bin,使用默认的规则在 src/bin 目录中建一个 hello.rs 的文件,配置好后就可以构建出 hello 的二进制可执行文件。
但是有些 mod 比如在 src/mymod 中建立了一个 mod,这时在 src/main.rs 中是可以使用 mod mymod; 使用 mymod 中的功能的,但是在 bin 中完全找不到任何方法引用,试过所谓的 crate:: super:: 都完全无用。
/bin/hello.rs
/main.rs
/mymod/mod.rs
难道为了把 bin 统一放在 bin 目录,所有的 mod 就都得放到 bin 目录中去??这不是扯吗?
Cargo: 1.44.0
Rustup: 1.21.1
1
共 4 条评论, 1 页
评论区
写评论可是这样要求必须有一个 lib 才行,实际上主目录(src)下可能有很多的mod目录,这样得要求lib把他们全暴露出来? 对以下内容的回复:
这样子引用。
用crate名引用,比如crate叫foo,就直接foo::bar。bin文件夹下面的文件是把你写的crate当成一个依赖。
目前找到一个方法,就是在 Cargo.toml 中定义一个 lib。
如果 mymod 中还有其它的模块,比如 mojo.rs,则在 mod.rs 中使用 pub mod mojo
然后在 bin/hello.rs 中直接 use。
还没找到其它更优雅的办法。。
貌似 bin 目录下的东西并不在整个树里面。