gpt4 book ai didi

rust - 为什么我需要 mod 关键字来访问文件中同一级别的 Rust 结构?

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

mod pair;
mod point;
mod rectangle;

use pair::Pair;
use point::Point;
use rectangle::Rectangle;

这些结构不应该在与 pair.rs、point.rs 和 rectangle.rs 相同级别的代码文件的相同范围内可用吗?

是否有类似 python 的语法?

from A import B

最佳答案

Rust 的模块系统允许您将代码拆分成小的、可重用的模块。您使用 mod 关键字声明新模块。每个模块都有自己的范围。这意味着如果你想使用模块中的 struct (或其他任何东西),你需要键入 module_name::StructName 或使用 将它引入你的代码范围use 关键字(use module_name::StructName)。这是因为在两个不同的模块中可能有两个同名的不同结构。前任。模块b中有一个struct A,模块C中有一个struct A。如果每个模块没有单独的作用域,将导入哪个结构 A? Rust 无法弄清楚我们的意图是什么。它可能会导致错误和其他问题。

要导入模块,您需要使用模块名称双冒号和导入的子模块或结构 e.x 的名称

use std::io;

要导入一个模块的所有子模块,您需要使用模块名称双冒号和星号,例如

use std::*;

您还可以使用 super 关键字引用父模块并一次导入其所有模块,例如:

mod pair;
mod point;
mod rectangle;

use super::*;

Rust 1.25您可以嵌套导入组,例如:

use std::{
cmp::{self, Ordering},
fs,
io::prelude::*,
};

另请阅读:

关于rust - 为什么我需要 mod 关键字来访问文件中同一级别的 Rust 结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51334962/

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