繁体   English   中英

Rust中的导入/模块系统如何工作?

[英]How does the import/module system in Rust work?

我目前正在学习Rust。 我刚刚掌握了借用系统,但是我不知道模块系统如何工作。

要导入extern模块,我必须编写extern crate sdl2; 但是,如果我想导入一个非外部包装箱怎么办?

我知道我可以使用mod定义一个模块,例如:

mod foo {
    fn bar(length: i32) -> Vec<i32> {
        let mut list = vec![];
        for i in 0..length + 1 {
            if list.len() > 1 {
                list.push(&list[-1] + &list[-2]);
            } else {
                list.push(1);
            }
        }
        list
    }
}

并与foo::在同一文件中使用它,但是如何使用其他文件中的函数/模块呢?

仅出于细节考虑,请考虑以下设置:

.
|-- Cargo.lock
|-- Cargo.toml
`-- src
    |-- foo.rs
    `-- main.rs

所以在src / foo.rs中,我有:

fn bar(length: i32) -> Vec<i32> {
    let mut list = vec![];
    for i in 0..length + 1 {
        if list.len() > 1 {
            list.push(&list[-1] + &list[-2]);
        } else {
            list.push(1);
        }
    }
    list
}

我想在src/main.rs使用它。 当我尝试use foo::bar ,我得到:

  |
1 | use foo::bar;
  |     ^^^^^^^^ Maybe a missing `extern crate foo;`?

将函数放入mod foo {...} ,出现相同的错误。

如果有关于该主题的任何文章,请给我链接,因为除了Rust Book之外我什么也没有。

将此声明添加到您的main.rs文件中:

mod foo;

它的作用类似于:

mod foo { include!("foo.rs") }

尽管它知道如果没有foo.rs文件,但是有一个foo/mod.rs文件来代替它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM