如何在 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
),我就没有问题
- 我只是将我感兴趣的函数放入该文件中
pub fn enumerate_monitors() -> Vec<MONITORINFOEXW>
- 只需要在某处写上
mod win;
- 然后我就可以使用函数
let monitors = win::enumerate_monitors();
但那是一个小文件,所以没有真正的问题,然后我开始在 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;
在此之后,任何其他文件 use
s 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::
作用域。
由于这方面的文档有点多,我只想用模块解决一个问题
我有以下文件
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
),我就没有问题
- 我只是将我感兴趣的函数放入该文件中
pub fn enumerate_monitors() -> Vec<MONITORINFOEXW>
- 只需要在某处写上
mod win;
- 然后我就可以使用函数
let monitors = win::enumerate_monitors();
但那是一个小文件,所以没有真正的问题,然后我开始在 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;
在此之后,任何其他文件 use
s 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::
作用域。