Rust Series #2 - รู้จัก Cargo: ผู้ช่วยส่วนตัวของโปรเจกต์ Rust!
ถ้าคุณเริ่มต้นเขียน Rust แล้วรู้สึกว่า “เฮ้ย! Rust เจ๋งแหะ” ก็ขอแสดงความยินดีครับ คุณเพิ่งเจอเพื่อนแท้ในโลกโปรแกรมมิ่ง! แต่เดี๋ยวก่อน... ถ้าต้องเขียนโค้ดโปรเจกต์ใหญ่ ๆ บริหารไลบรารี ดูแลไฟล์ต่าง ๆ หรือทดสอบโค้ดทุกวัน มันอาจไม่ง่ายเลย นี่แหละคือเหตุผลที่ Cargo เกิดมาเพื่อช่วยชีวิตโปรแกรมเมอร์อย่างเรา ๆ
Cargo คืออะไร?
Cargo คือเครื่องมือจัดการโปรเจกต์สำหรับ Rust (หรือพูดง่าย ๆ ว่า "package manager" คล้าย npm , yarn ใน NodeJS)
Cargo ช่วยเราทำอะไรได้บ้าง?
- สร้างโปรเจกต์ใหม่
- จัดการ dependency (ไลบรารีที่โปรเจกต์ของคุณต้องใช้)
- คอมไพล์โปรเจกต์
- รันโปรเจกต์
- ทดสอบโค้ด (testing)
- สร้างเอกสาร (documentation)
พูดง่าย ๆ มันคือผู้ช่วยส่วนตัวของคุณเวลาเขียน Rust นั่นเอง!
ติดตั้ง Cargo
ไม่ต้องกังวล ถ้าคุณติดตั้ง Rust ด้วย rustup
ไปแล้ว Cargo จะมาพร้อมกันเลย!
ลองเช็กว่าติดตั้ง Cargo แล้วหรือยังด้วยคำสั่งนี้:
cargo --version
ถ้าได้ผลลัพธ์ประมาณนี้:
cargo 1.x.x (yyyy-mm-dd)
แปลว่าพร้อมลุยแล้วครับ 🚀
เริ่มต้นใช้งาน Cargo
1. สร้างโปรเจกต์ใหม่ด้วย Cargo
แทนที่จะสร้างไฟล์ main.rs
เองแบบเดิม ๆ ใช้ Cargo ช่วยจัดการดีกว่า!
cargo new hello_cargo
คำสั่งนี้จะสร้างโครงสร้างโปรเจกต์ที่พร้อมใช้งานทันที:
hello_cargo/
├── Cargo.toml # ไฟล์ตั้งค่าโปรเจกต์
└── src/
└── main.rs # ไฟล์โค้ดหลัก
Cargo.toml
คืออะไร?
- ไฟล์นี้คือหัวใจของโปรเจกต์ ใช้สำหรับกำหนดชื่อโปรเจกต์, เวอร์ชัน, และ dependency ต่าง ๆ
ลองเปิด Cargo.toml
จะเห็นหน้าตาประมาณนี้:
[package]
name = "hello_cargo"
version = "0.1.0"
edition = "2021"
[dependencies]
2. รันโปรเจกต์ด้วย Cargo
เข้าไปในโฟลเดอร์ hello_cargo
แล้วรันคำสั่ง:
codecargo run
ผลลัพธ์:
Hello, world!
ง่ายมั้ยล่ะ! 😄
การจัดการ Dependency ด้วย Cargo
Dependency คือไลบรารีหรือโค้ดจากภายนอกที่โปรเจกต์ของคุณต้องใช้ เช่น จัดการ JSON, HTTP หรือการเข้ารหัส
วิธีเพิ่ม Dependency
เปิดไฟล์ Cargo.toml
แล้วเพิ่มไลบรารีที่ต้องการ เช่น:
[dependencies]
serde = "1.0" # ไลบรารีสำหรับ JSON
tokio = { version = "1", features = ["full"] } # ไลบรารีสำหรับ async
จากนั้นรัน:
cargo build
คำสั่ง Cargo ที่ควรรู้
คำสั่ง | ความหมาย |
---|---|
cargo new | สร้างโปรเจกต์ใหม่ |
cargo init | แปลงโฟลเดอร์ปัจจุบันให้เป็นโปรเจกต์ Rust |
cargo run | คอมไพล์และรันโปรเจกต์ |
cargo build | คอมไพล์โปรเจกต์ในโหมด debug |
cargo build --release | คอมไพล์ในโหมด release (ประสิทธิภาพสูงกว่า) |
cargo test | รันทดสอบ (unit tests) |
cargo doc | สร้างเอกสารจากโค้ด |
cargo update | อัปเดต dependency ให้เป็นเวอร์ชันล่าสุด |
การจัดการ Workspaces
Workspaces ใช้จัดการหลายโปรเจกต์ในโฟลเดอร์เดียวกัน (เหมาะกับโปรเจกต์ใหญ่ ๆ)
ตัวอย่าง Cargo.toml
สำหรับ Workspaces:
[workspace]
members = [
"project_a",
"project_b",
]
จากนั้นแต่ละโปรเจกต์ย่อย (project_a
, project_b
) จะมี Cargo.toml
แยกกัน
Cargo Tips & Tricks
- ใช้
cargo check
เพื่อตรวจสอบโค้ดเร็วขึ้นโดยไม่ต้องคอมไพล์เต็มรูปแบบ - ใช้
cargo fmt
จัดฟอร์แมตโค้ดให้อ่านง่าย (ตามมาตรฐาน Rust) - ใช้
cargo clippy
เพื่อตรวจสอบข้อผิดพลาดหรือโค้ดที่ไม่ควรทำ
สรุป
Cargo เป็นเหมือน "เครื่องมือสารพัดประโยชน์" ที่ทำให้การเขียนโปรแกรม Rust เป็นเรื่องง่ายขึ้น
ไม่ว่าคุณจะสร้างโปรเจกต์ใหม่ จัดการ dependency หรือทดสอบโค้ด Cargo ช่วยให้ทุกอย่างสะดวก รวดเร็ว และเป็นระเบียบ