如何编写 use 语句以导入名称,但将其用作 mod1::mod2::item



鉴于文件src/A/B/C.rs存在,我会在文件src/D.rs中写入什么use语句,以便我可以A::B::C访问C

我试过:use A::B::C,但后来我不能把它称为A::B::C. 我试过:use A::{B::C},但后来我只能将其称为B::C

mod A;
fn main() {
    A::B::C::ModuleCfn();
}

以下是我尝试过的文件和模块:

src/A.rs =>
    pub mod B;
src/A/B.rs =>
    pub mod C;
src/A/B/C.rs =>
    pub fn ModuleCfn() { }

假设我想参考:

actix_web_httpauth::extractors::bearer::BearerAuth

bearer::BearerAuth

actix_web_httpauth::headers::www_authenticate::bearer::Error

bearer::Error

这是不可能的,因为它需要这两个语句,它们相互冲突:

use actix_web_httpauth::extractors::bearer;
use actix_web_httpauth::headers::www_authenticate::bearer;

诚然,这是一个边缘情况,但对我来说,不可能在保留该命名空间的部分路径的同时指定命名空间的子集似乎很奇怪。

最合理的解决方案似乎是这样的:

use actix_web_httpauth::extractors::bearer as xbearer;
use actix_web_httpauth::headers::www_authenticate::bearer as ybearer;
...
xbearer::BearerAuth ...
ybearer::Error ...

最新更新