如何在 Rust 中将对象包含到 mod.rs 中?

How to include objects into mod.rs in rust?

由于这方面的文档有点多,我只想用模块解决一个问题

我有以下文件

project/src/main.rs
project/src/win/mod.rs  //just some win32 specific utilities
project/src/geom/mod.rs
project/src/geom/rectangle.rs
project/src/geom/triangle.rs

只要有 mod.rs(比如文件夹 win),我就没有问题

但那是一个小文件,所以没有真正的问题,然后我开始在 geom 中添加很多代码,我无法在 mod.rs[=23= 中添加所有代码]

如何将所有形状添加到 geom 模块?

mod geom;

fn main()
{
   let tri  = geom::triangle::new();
   let rect = geom::rectangle:new();
}

是否也可以在 geom 文件夹中保留一个 mod.rs 以便使用它来显示所有形状?

如果它是您要创建的库(而不是可执行文件箱),则必须至少有一个 src/lib.rs 文件。该文件大多数时候没有 main(),通常 "import" 里面有各种子模块。

在您的情况下,您可以使用类似这样的方式引入其他模块:

// For example in project/src/geom/mod.rs
// bring rectangle and triangle in the scope of the current module:

pub mod rectangle;
pub mod triangle;

在此之后,任何其他文件 uses geom/mod.rs 也可以访问 rectangle.rs 中定义的函数/结构,并且可以使用 rectangle::<struct-or-function-name

此外,您还可以使用 pub use self::rectangle::*:

pub mod rectangle;
pub mod triangle;

use self::rectangle::*;
use self::triangle::*;

这会将所有函数/结构等带入 geom/mod.rs 的范围内。这样,无论其他模块使用 geom/mod.rs 都不必在访问其结构和函数之前指定例如额外的 rectangle:: 作用域。