< 返回版块

leslieDD 发表于 2021-04-27 10:34

Tags:引用

以下是包的目录结构:

D:.
|   .gitignore
|   Cargo.lock
|   Cargo.toml
|
+---src
    |   main.rs
    |
    +---my_rand
    |       mod.rs
    |       randf_514.rs
    |       randf_515.rs
    |       randf_516.rs
    |
    \---my_vec
            mod.rs


想实现: 目录my_vec下的mod.rs中调用目录my_randrandf_516.rs中的某个函数,要怎么做啊

评论区

写评论
作者 leslieDD 2021-04-27 11:28

感谢~~,问题解决了, 需要在main.rs中引入

mod my_rand;
mod my_vec;

--
👇
Aya0wind: 核心是找到另一个模块在module tree中的位置,可以从根开始,或者使用super或者上级。 假设rand512.rs里面写了这个函数。

pub fn test() {}

然后rand/mod.rs里面这样写

mod rand512;
pub use rand512::test;

那么在my_vector/mod.rs里就可以这么写

use super::rand::test;

然后因为rand module是挂在根上的,还可以这么写

use crate::rand::test;

当然如果你的rand512在rand/mod.rs里的导出方式不一样,写的也不一样,比如没有用pub use而是用的pub mod。比如你是这样导出的。

pub mod rand512;

那么就要写成

use super::rand::rand512::test;

同理这样也行

use crate::rand::rand512::test;
Aya0wind 2021-04-27 10:50

核心是找到另一个模块在module tree中的位置,可以从根开始,或者使用super或者上级。 假设rand512.rs里面写了这个函数。

pub fn test() {}

然后rand/mod.rs里面这样写

mod rand512;
pub use rand512::test;

那么在my_vector/mod.rs里就可以这么写

use super::rand::test;

然后因为rand module是挂在根上的,还可以这么写

use crate::rand::test;

当然如果你的rand512在rand/mod.rs里的导出方式不一样,写的也不一样,比如没有用pub use而是用的pub mod。比如你是这样导出的。

pub mod rand512;

那么就要写成

use super::rand::rand512::test;

同理这样也行

use crate::rand::rand512::test;
1 共 2 条评论, 1 页