使用嵌套模块中的项目时出现“未解决的导入”

q

我有一个试图开始工作的小程序,但是我一直收到未解决的导入消息。

main.rs:

mod sub_module;
use sub_module::a_structure;

fn main() {
    let x: a_structure = /* init code */;
}

sub_module.rs:

pub mod sub_sub_module;

pub use sub_sub_module::a_structure;

sub_sub_module.rs:

pub struct a_structure<T> {
    some_field: i32,
}

但是,执行时,cargo build我得到了“未解决的导入sub_sub_module::a_structure”。我发现的有关可见性的所有内容都表明,此方法应该起作用,但事实并非如此。我在这里想念什么?

DK。

将Rust模块想像成目录树。模块是目录,其他都是文件[1]。::基本上是/

因此,您具有以下结构:

/ (crate root)
 └┬─ sub_module
  │   └┬─ sub_sub_module
  │    │   └── a_structure
  │    └─ a_structure [x]
  ├─ a_structure
  └─ main

问题在于如何定义a_structure [x]“符号链接”。正如书中所解释的,useRust中的路径是绝对路径,在这种类比中,它们隐式地以开头/这意味着use sub_sub_module::a_structure是指/sub_sub_module/a_structure,它不存在

解决方案是通过使用self(有效.)或super(有效..显式启动路径来使用相对路径您需要./sub_sub_module/a_structure,因此Rust中的路径应该是self::sub_sub_module::a_structure一个完整的,带有警告的编译示例如下所示:

mod sub_module {
    pub mod sub_sub_module {
        pub struct a_structure {
            some_field: i32,
        }
    }

    pub use self::sub_sub_module::a_structure;
}

use sub_module::a_structure;

fn main() {
    let x: a_structure = panic!("TODO");
}

您还应该注意,a之外任何地方使用的路径use具有完全相反的默认值:默认情况下,它们是相对于包含模块的。如果你在这种情况下,绝对路径,则需要通过启动与路径明确要求一个::(就是这样,是默认文件系统路径,解释为相对)。

除了:常规样式PascalCase用于类型名称。另外,我还必须删除类型参数,因为它没有被使用。


[1]:实际上,这是一个谎言,因为您可以将项目与其他项目相关联例如,关联consts虽然不稳定,但却一回事。我想您可以从资源分支之类的角度来思考它们,我不知道。这只是一个比喻!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Rust 2018中跨模块调用函数时出现“未解决的导入”

将Firebase模块导入标准Vue.js项目时出现Webpack“未捕获类型错误”

导入ReactJS时出现“未捕获的SyntaxError:无法在模块外部使用import语句”

未解决的依赖项-导入SBT项目时出错

使用VS Code时,如何在Rust中解决“未解决的导入”问题?

导入嵌套模块时找不到模块

使用 Python 模块运行 Ansible Playbook 时出现导入错误

尝试使用已导入的模块时出现NameError

在Sublime Text 3中使用OCaml构建系统时出现“未绑定模块普及”错误

将库导入我的c ++项目时出现问题,如何解决?

创建语法扩展时出现未解决的导入错误E0432

导入sbt项目时出错,服务器访问错误,未解决的依赖关系

为什么有时我可以使用嵌套模块中的函数而无需导入整个路径?

在Angular项目中导入库时出现“找不到模块Fingerprintjs2”错误

在IntelliJ中打开Haxe项目时出现“未解析符号”

导入 Keras 模块时出现断言错误

在包内导入模块时出现“ ModuleNotFoundError”

在类中导入模块,但是在类方法中使用模块时出现NameError

尝试在Django应用程序的js文件中导入vue.js时出现“未捕获的SyntaxError:无法在模块外部使用import语句”

从Eclipse中的所有项目中删除未使用的导入

使用PyCharm导入模块时出现错误,而使用Jupyter Notebook时不会发生错误

从Elm中的嵌套目录导入模块?

从git导入项目时出现NoClassDefFound错误

模块名称在变量中时导入模块

使用导入模块中的变量时,SASS'无效的CSS错误'

导入不显示模块的stmp库时出现导入错误

Python:尝试从导入的包中导入模块时出现“ ModuleNotFoundError”

尝试导入NLTK模块时出现导入错误

VSCode Python中未解决的导入