การใช้ Cargo และ Crate.io: ตัวจัดการแพ็กเกจใน Rust

Sharing is caring!

Cargo คือเครื่องมือ build system และ package manager ที่ทรงพลังของภาษา Rust ซึ่งช่วยให้การสร้างโปรเจกต์ จัดการ dependencies รัน test และ build binary เป็นเรื่องง่าย

1. เริ่มต้นสร้างโปรเจกต์ด้วย Cargo

cargo new hello_cargo
cd hello_cargo
cargo run

คำสั่งนี้จะสร้างโครงสร้างโปรเจกต์ใหม่พร้อมไฟล์สำคัญ:

  • Cargo.toml — metadata และ dependencies
  • src/main.rs — จุดเริ่มต้นของโปรแกรม

2. Cargo Commands ที่ควรรู้

cargo build       # คอมไพล์โปรเจกต์
cargo run         # รันโปรเจกต์
cargo check       # ตรวจสอบ syntax
cargo test        # รัน unit tests
cargo doc --open  # เปิดเอกสารของโปรเจกต์
cargo update      # อัปเดต dependencies

3. การเพิ่ม Dependency จาก Crates.io

Crates.io คือแหล่งรวม library และแพ็กเกจของ Rust ที่ใหญ่ที่สุด

ตัวอย่างเพิ่ม dependency rand เพื่อใช้สุ่มเลข

# ในไฟล์ Cargo.toml

[dependencies]

rand = “0.8”

จากนั้นใช้งานได้ทันทีในโค้ด:

use rand::Rng;

fn main() {
    let mut rng = rand::thread_rng();
    let n: u8 = rng.gen_range(1..=100);
    println!("สุ่มได้เลข: {}", n);
}

4. เพิ่ม Feature และเวอร์ชันพิเศษ

serde = { version = "1.0", features = ["derive"] }

5. การสร้าง Library Crate ด้วย Cargo

cargo new my_utils --lib

ใน src/lib.rs เขียนโค้ดของ library

pub fn greet(name: &str) -> String {
    format!("สวัสดี {}!", name)
}

6. การ publish crate สู่ Crates.io

  1. สมัครบัญชีใน crates.io
  2. รัน cargo login และใส่ token
  3. เพิ่ม metadata ใน Cargo.toml
  4. สั่ง publish ด้วย cargo publish

ตัวอย่าง metadata ที่จำเป็น:

[package]
name = "my_utils"
version = "0.1.0"
edition = "2021"
description = "Library สำหรับ greeting"
license = "MIT"
repository = "https://github.com/yourname/my_utils"

7. Workspaces (โปรเจกต์ที่มีหลาย crate)

สร้าง workspace ด้วยโฟลเดอร์หลักที่มี Cargo.toml แบบพิเศษ:

[workspace]
members = [
  "frontend",
  "backend"
]

เหมาะสำหรับโปรเจกต์ใหญ่ที่มีหลาย service

8. Cargo.lock

ไฟล์นี้ล็อกเวอร์ชันของ dependency เพื่อความสม่ำเสมอในการ build

9. ตัวอย่างโปรเจกต์ใช้หลาย crate

[dependencies]
regex = "1.7"
chrono = { version = "0.4", features = ["serde"] }
use regex::Regex;
use chrono::Utc;

fn main() {
    let now = Utc::now();
    let re = Regex::new(r"\d+").unwrap();
    println!("ตอนนี้คือ: {}", now);
    println!("123abc = {:?}", re.is_match("123abc"));
}

10. รวมแหล่งเรียนรู้ Cargo & Crates

สรุป

Cargo เป็นเพื่อนแท้ของนักพัฒนา Rust และ crates.io คือขุมทรัพย์ของ library คุณภาพ การเข้าใจการใช้งานและสร้าง crate เองเป็นขั้นตอนสำคัญที่จะทำให้คุณพัฒนาโปรแกรมได้คล่องและเป็นมืออาชีพมากขึ้น


📌 คำค้น SEO

cargo rust, rust package manager, rust dependency, crate.io rust, สร้าง library rust, cargo publish crate, rust crate คืออะไร, rust workspace, cargo toml config, rust crate ไทย

เผยแพร่โดย poolsawat.com

Leave a Reply

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *