การจัดการโครงสร้างโปรเจกต์และการเขียนโมดูล (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 และโครงสร้างโปรเจกต์แบบมืออาชีพ