0Pricing
Learn Rust Coding · บทเรียน

เวิร์กสเปซ

โครงการที่มีหลายเครต

เวิร์กสเปซ เป็นบทเรียน Learn Rust Coding ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn Rust Coding และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn Rust Coding มีบทเรียนทั้งหมด 4 บทเรียน

เวิร์กสเปซคืออะไร

เวิร์กสเปซ คือชุดเครตที่เกี่ยวข้องกัน ซึ่งใช้ Cargo.lock ร่วมกันและใช้ไดเรกทอรี target เดียวกัน นี่เป็นวิธีมาตรฐานในการจัดการโปรเจกต์ที่มีหลายเครต

ไฟล์รายการราก

โฟลเดอร์รากของเวิร์กสเปซมี Cargo.toml พร้อมตาราง [workspace] ที่แสดงรายการเครตสมาชิก โดยทั่วไปตัวรากเองจะไม่มีแพ็กเกจ

[workspace]
members = ["app", "core", "utils"]
resolver = "2"

โครงสร้างเวิร์กสเปซ

รูปแบบทั่วไปคือให้แต่ละ crate อยู่ในไดเรกทอรีย่อยของตนเอง:

  • Cargo.toml — รากของ workspace
  • app/ — crate แบบไบนารี
  • core/ — crate แบบไลบรารี
  • utils/ — crate แบบไลบรารีอีกตัวหนึ่ง

การสร้างสมาชิก

สร้างสมาชิกเช่นเดียวกับ crate ใด ๆ จากนั้นเพิ่มสมาชิกเหล่านั้นลงในรายการ members ของไฟล์กำกับที่ราก

cargo new app
cargo new core --lib
cargo new utils --lib

การพึ่งพาสมาชิก

crate สมาชิกหนึ่งจะพึ่งพาอีก crate หนึ่งได้โดยใช้การพึ่งพาแบบ path ในไฟล์ Cargo.toml ของตนเอง

[dependencies]
core = { path = "../core" }
utils = { path = "../utils" }

การเรียกใช้ข้าม crate

รายการแบบสาธารณะใน crate หนึ่งจะถูกใช้จากอีก crate หนึ่งโดยอ้างอิงชื่อ crate ในที่นี้ core เปิดเผยฟังก์ชันที่ไบนารีเรียกใช้

// in core/src/lib.rs
pub fn greeting(name: &str) -> String {
    format!("Hello, {name}!")
}

// in app/src/main.rs
fn main() {
    let msg = core::greeting("workspace");
    println!("{msg}");
}

การสร้างทั้ง workspace

การเรียกใช้ Cargo ที่รากจะสร้างสมาชิกทุกตัว ไดเรกทอรี target ที่ใช้ร่วมกันทำให้การพึ่งพาร่วมกันถูกคอมไพล์เพียงครั้งเดียว

cargo build
cargo test

การกำหนดเป้าหมายสมาชิกเดียว

ใช้ -p (หรือ --package) เพื่อเรียกใช้คำสั่งกับ crate สมาชิกเพียงตัวเดียว

cargo run -p app
cargo test -p core

การพึ่งพาของ workspace

กำหนดเวอร์ชันที่ใช้ร่วมกันเพียงครั้งเดียวภายใต้ [workspace.dependencies] จากนั้นอ้างอิงเวอร์ชันเหล่านั้นจากสมาชิก เพื่อให้เวอร์ชันสอดคล้องกัน

# root Cargo.toml
[workspace.dependencies]
serde = "1.0"

# member Cargo.toml
[dependencies]
serde = { workspace = true }

เหตุใดจึงควรใช้ workspace

ประโยชน์ของ workspace:

  • ไฟล์ล็อกเดียวที่ใช้ร่วมกัน ทำให้เวอร์ชันสอดคล้องกัน
  • สร้างได้เร็วขึ้นผ่านไดเรกทอรีเป้าหมายเดียวที่ใช้ร่วมกัน
  • แยกโครงการขนาดใหญ่ออกเป็น crate ที่มีหน้าที่ชัดเจนได้ง่าย
  • ใช้คำสั่งเดียวเพื่อสร้างและทดสอบทุกอย่าง

การยกเว้นไดเรกทอรี

คีย์ exclude จะกันไดเรกทอรีบางรายการออกจาก workspace ขณะที่ default-members กำหนดว่า crate ใดจะทำงานเมื่อไม่ได้ส่ง -p

[workspace]
members = ["app", "core"]
exclude = ["experiments"]
default-members = ["app"]

ตรวจสอบอย่างรวดเร็ว

crate ทั้งหมดใน workspace ใช้อะไรร่วมกัน

สรุปทบทวน

คุณได้เรียนรู้เกี่ยวกับ workspace:

  • ตาราง [workspace] แสดงรายการสมาชิก
  • สมาชิกพึ่งพากันผ่าน path
  • ไฟล์ล็อกและไดเรกทอรีเป้าหมายที่ใช้ร่วมกันช่วยให้สร้างได้เร็วขึ้น
  • ใช้ -p เพื่อกำหนดเป้าหมายสมาชิกหนึ่งตัว
  • [workspace.dependencies] รวมศูนย์การกำหนดเวอร์ชัน

คำถามที่พบบ่อย

บทเรียน “เวิร์กสเปซ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “เวิร์กสเปซ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn Rust Coding ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn Rust Coding มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “เวิร์กสเปซ”

โครงการที่มีหลายเครต คุณปฏิบัติ Learn Rust Coding ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn Rust Coding หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn Rust Coding บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “เวิร์กสเปซ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Learn Rust Coding นี้ได้ไหม

ได้ บทเรียน Learn Rust Coding ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พื้นฐาน Cargo
  2. Cargo.toml
  3. เวิร์กสเปซ
  4. ฟีเจอร์และโปรไฟล์
← กลับไปที่ Learn Rust Coding