gpt4 book ai didi

module - 如何在 rust 中将对象包含到 mod.rs 中?

转载 作者:行者123 更新时间:2023-12-03 11:37:20 25 4
gpt4 key购买 nike

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

我有以下文件

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 中添加所有内容

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

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

    是否也可以保留 mod.rs里面 geom文件夹以使用它来显示所有形状?

    最佳答案

    如果它是您要创建的库(而不是可执行的 crate),则必须至少有一个 src/lib.rs文件。该文件大多数时候没有main()通常在其中“导入”各种子模块。

    在您的情况下,您可以将其他模块引入范围,如下所示:

    // 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::访问其结构和函数之前的范围。

    关于module - 如何在 rust 中将对象包含到 mod.rs 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62374431/

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