全局导入功能中的本地枚举

迪伦

Rust中最近的枚举命名空间更改已破坏了我的一些旧代码。为了尝试使其再次编译,我尝试添加glob导入。不幸的是,我无法将此功能用于函数中定义的枚举。我找不到将本地枚举的变体导入本地名称空间的方法。

#![feature(globs)]
fn main() {
    use self::Foo::*; // Does not work
    enum Foo {
        Bar,
        Baz
    }
    let x = Bar; // Error - Bar not found
}

在这种情况下使用什么合适的import语句?

DK。

不幸的是,我认为这是不可能的。

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章