การจัดการโครงสร้างโปรเจกต์และการเขียนโมดูล (Module) ที่ดีคือหัวใจสำคัญของการเขียนโปรแกรมที่สามารถดูแลรักษาได้ในระยะยาว โดยเฉพาะในภาษา Rust ที่มีระบบ module ที่ยืดหยุ่น บทความนี้จะอธิบายทุกสิ่งที่คุณต้องรู้เกี่ยวกับการแยกโค้ด การใช้ mod และ pub และโครงสร้างแฟ้มโฟลเดอร์ที่เหมาะสม
เริ่มต้น: โครงสร้างโปรเจกต์พื้นฐาน
เมื่อคุณสร้างโปรเจกต์ Rust ใหม่ด้วยคำสั่ง:
cargo new my_project
คุณจะได้โครงสร้างโฟลเดอร์ดังนี้:
my_project/
├── Cargo.toml
└── src/
└── main.rs
การสร้าง Module แรก
สมมติว่าเราต้องการแยกฟังก์ชัน greet ไปไว้ในโมดูลแยก เราสามารถทำได้โดย:
// src/greeting.rs
pub fn greet(name: &str) {
println!("Hello, {}!", name);
}
แล้วใน main.rs:
mod greeting;
fn main() {
greeting::greet("Rust");
}
โครงสร้างที่ซับซ้อนขึ้นด้วย Submodule
เมื่อโปรเจกต์ใหญ่ขึ้น ควรแยกไฟล์เป็นโฟลเดอร์ย่อย และใช้ mod.rs:
src/ ├── main.rs ├── content/ │ ├── mod.rs │ └── article.rs ├── network/ │ ├── mod.rs │ └── client.rs └── mod.rs

ตัวอย่างการประกาศใน src/mod.rs:
pub mod content; pub mod network;
การใช้ pub และการเข้าถึง Struct
หากคุณต้องการให้ Struct ถูกใช้จากไฟล์อื่น ต้องใช้ pub:
// src/network/client.rs
pub struct SmtpServer;
impl SmtpServer {
pub fn new() -> SmtpServer {
SmtpServer
}
}
และใน main.rs:
mod network;
use network::client::SmtpServer;
fn main() {
let server = SmtpServer::new();
}
Best Practices สำหรับการจัดการ Project
- หลีกเลี่ยงการยัดทุกอย่างไว้ใน
main.rs - ใช้โฟลเดอร์ +
mod.rsสำหรับการจัดระเบียบ module - ตั้งชื่อ module ให้สื่อความหมาย เช่น
auth.rs,database.rs - ประกาศสิ่งที่จำเป็นด้วย
pubเท่านั้น - หลีกเลี่ยงการใช้
pub useเกินความจำเป็น
สรุป
การจัดการ Module และ Project Structure ใน Rust ถือเป็นพื้นฐานที่สำคัญสำหรับการพัฒนาแอปพลิเคชันให้เติบโตได้อย่างมีระเบียบ โค้ดที่อ่านง่าย เข้าใจง่าย คือโค้ดที่สามารถพัฒนาและดูแลต่อได้ในอนาคต
บทความโดย poolsawat.com – Rust, Dev Tips และโครงสร้างโปรเจกต์แบบมืออาชีพ