เวิร์กสเปซ
โครงการที่มีหลายเครต
เวิร์กสเปซ เป็นบทเรียน 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— รากของ workspaceapp/— 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐาน Cargo
- Cargo.toml
- เวิร์กสเปซ
- ฟีเจอร์และโปรไฟล์