有没有办法在use
声明中引用本地名称?
pub mod a {
pub mod b {
pub mod c {
}
}
}
fn main() {
use a::b;
use a::b::c; //< This compiles, but is kind of roundabout,
// considering that I have already imported `b` into scope.
use b::c; //< This fails to compile!
use self::b::c; //< This also fails to compile
}
我目前正在开发一个生成代码的过程宏,并且为了保持卫生,我想为本地导入的包添加use
声明(在这种情况下为extern crate blah
)。但是,我似乎无法在use
声明中引用该名称。
有可能吗?详细说明use
名称解析的规则在哪里?
我放了一个more elaborate/motivating example,其中我使用use
将特征带到操场上。
答案 0 :(得分:0)
如果您已导入a::b
并想要从c
访问特征,则可以按以下方式执行此操作:
pub mod a {
pub mod b {
pub mod c {
pub trait Foo {}
}
}
}
fn main() {
use a::b;
struct Derp;
impl b::c::Foo for Derp {}
}