< 返回版块

hijulien 发表于 2024-12-02 22:33

刚接触Rust,项目中各个模块和文件夹下面都有一个mos.rs,个人觉得有点麻烦,感觉不如其他编程语言直接从文件引入public资源

评论区

写评论
作者 hijulien 2024-12-03 17:04

感谢答复

--
👇
c5soft: 不单独建立模块文件夹就不需要mod.rs,直接在lib.rs/main.rs中申明模块文件就可以了。

//main.rs
mod a;
use a::something;
fn main() {
  something();
}

// a.rs
pub fn something() {
  println!("This is mod a");
}

作者 hijulien 2024-12-03 17:04

感谢答复

--
👇
c5soft: 不单独建立模块文件夹就不需要mod.rs,直接在lib.rs/main.rs中申明模块文件就可以了。

//main.rs
mod a;
use a::something;
fn main() {
  something();
}

// a.rs
pub fn something() {
  println!("This is mod a");
}

作者 hijulien 2024-12-03 17:03

感谢答复

--
👇
SleepyBoy: 直接从文件引入pub资源可以,但是项目文件繁杂之后,没办法进行分层管理,只能介入目录结构。

那路径导入就有多种设计选择了:

一种是目录下的文件定义了public资源就可以任意导入(像Java9发布模块功能之前的),优点是简单直接,缺点是没法精细控制权限

rust选择的是纯模块化设计,目录也视为一个模块,其标准化文件就是mod.rs,在这里面可以灵活控制允许导出模块外的访问权限,同时又不影响其子模块之间的权限访问,不会出现顶层模块没有开放权限的情况下,外部直接穿透访问子模块的某个pub资源。

嵌套mod本身符合树形结构,嵌套mod可以塞到一个“压缩”文件里面,同时也可以展开到目录结构上,由于“目录”这个文件的特殊性,才需要一个标准文件mod.rs

LazyQc 2024-12-03 12:15

直接从文件引入pub资源可以,但是项目文件繁杂之后,没办法进行分层管理,只能介入目录结构。

那路径导入就有多种设计选择了:

一种是目录下的文件定义了public资源就可以任意导入(像Java9发布模块功能之前的),优点是简单直接,缺点是没法精细控制权限

rust选择的是纯模块化设计,目录也视为一个模块,其标准化文件就是mod.rs,在这里面可以灵活控制允许导出模块外的访问权限,同时又不影响其子模块之间的权限访问,不会出现顶层模块没有开放权限的情况下,外部直接穿透访问子模块的某个pub资源。

嵌套mod本身符合树形结构,嵌套mod可以塞到一个“压缩”文件里面,同时也可以展开到目录结构上,由于“目录”这个文件的特殊性,才需要一个标准文件mod.rs

c5soft 2024-12-03 08:08

不单独建立模块文件夹就不需要mod.rs,直接在lib.rs/main.rs中申明模块文件就可以了。

//main.rs
mod a;
use a::something;
fn main() {
  something();
}

// a.rs
pub fn something() {
  println!("This is mod a");
}

1 共 5 条评论, 1 页