gpt4 book ai didi

rust - 在函数中全局导入本地枚举

转载 作者:行者123 更新时间:2023-11-29 08:08:09 33 4
gpt4 key购买 nike

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

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

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

最佳答案

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

use 语句默认是absolute。因此,use Foo::*; 将不起作用,因为 Foo 不在根模块中。 use self::Foo::*; 不起作用,因为 self 指的是包含模块,不是 包含范围(在这个case 是包含模块中的一个函数)。

您可以某种通过将函数和枚举放在它们自己的模块中来解决这个问题,然后将函数重新导出到包含的模块。

use self::a::blah;
pub mod a {
use self::Foo::*;
enum Foo { Bar, Baz }
fn blah() { /* use Bar and Baz... */ }
}

关于rust - 在函数中全局导入本地枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27376426/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com