Rust中最近的枚举命名空间更改已破坏了我的一些旧代码。为了尝试使其再次编译,我尝试添加glob导入。不幸的是,我无法将此功能用于函数中定义的枚举。我找不到将本地枚举的变体导入本地名称空间的方法。
#![feature(globs)]
fn main() {
use self::Foo::*; // Does not work
enum Foo {
Bar,
Baz
}
let x = Bar; // Error - Bar not found
}
在这种情况下使用什么合适的import语句?
不幸的是,我认为这是不可能的。
use
缺省情况下,语句是绝对的。这样,use Foo::*;
将不会工作,因为Foo
它不在根模块中。use self::Foo::*;
不起作用,因为它self
指向包含模块,而不是包含范围(在这种情况下是包含模块内的函数)。
你可以一种变通的作法是将函数和枚举自己的模块中,则函数再出口到包含模块。
use self::a::blah;
pub mod a {
use self::Foo::*;
enum Foo { Bar, Baz }
fn blah() { /* use Bar and Baz... */ }
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句