cfanbo / cfanbo.github.io

1 stars 0 forks source link

Rust中将一个结构体拆分成多个文件 | 学习笔记 #269

Open cfanbo opened 3 months ago

cfanbo commented 3 months ago

https://blog.haohtml.com/posts/sparating-struct-into-multiple-file/

官方文档将一个模块拆分成多个文件时,介绍的是将原来多个模块写在同一个文件中,拆分成了每个模块一个文件。不过还有一种情况没有提到,如果一个模块中的某个 struct 实现代码过多时,仍写在同一个模块文件的话,维护成本就显的比较高了,这时我们可能还需要对这个 struct 的实现按某种粒度拆分成多个文件来实现。 ✗ tree . ├── main.rs ├── model │ ├── article.rs // 文章相关 │ └── user.rs // 用户相关 └── model.rs 这里是按官方教程拆分后的样子 article.rs 是文件模块相关实现 - user.rs 是与用户相关的实现 model.rs 公开模块 model.rs // src/model.rs pub mod article; pub mod user; pub 关键字表示该模块是公开的,可以被其他模块访问。 mod article 声明了一个名为 article 的模块,并且 Rust 编译器会在同文件名的目录下( src/model/ )找到一个名为 article.rs 或者 src/article/mod.rs 的文件来实现这个模块。 文章模块article.rs // src/model/article.rs pub struct Article { id: u32, title: String, } impl Article { pub fn new(id: u32, title: String) -> Self { Article { id, title } } pub fn info(&self) { println!