rust 如何在Cargo包中的两个二进制文件之间使用共享模块?

gpnt7bae  于 2023-10-20  发布在  Go
关注(0)|答案(1)|浏览(100)

我的项目有一个客户端和一个服务器二进制文件。所以我的Cargo.toml看起来像

[[bin]]
name = "server"
path = "src/server/mod.rs"

[[bin]]
name = "client"
path = "src/client.rs"

我的文件结构看起来像这样:

.
├── client.rs
├── server
│   ├── something.rs
│   └── mod.rs
└── shared
    ├── mod.rs
    └── something2.rs

我想做的是在server/mod.rs中使用shared中的任何内容。要做到这一点,我试图有一个mod shareduse crate::sharedserver/mod.rs,但我得到了错误“没有'共享'在根”(它只在shared/寻找)。我没有一个main.rs,我可以正确地声明模块。
所以我尝试的另一件事是使用server.rs而不是server/mod.rs。这部分工作,因为我现在可以宣布国防部共享。但是,我无法访问server/something.rs中的任何内容。有没有办法让server.rs看到server/的内容,或者有没有办法让server/mod.rs看到相邻模块的内容,而不需要顶层的main.rs

ojsjcaue

ojsjcaue1#

可以使用#[path]属性:

#[path = "../shared/mod.rs"]
mod shared;

但正确的方法是除了clientserver之外,还有一个库,并使两者都依赖于它。

相关问题