ภาคผนวก E — Edition
ในบทที่ 1 คุณเห็นว่า cargo new เพิ่ม metadata เล็กน้อยให้ไฟล์
Cargo.toml ของคุณเกี่ยวกับ edition ภาคผนวกนี้พูดเกี่ยวกับสิ่งนั้น
หมายความว่าอะไร!
ภาษา Rust และ compiler มี cycle release หกสัปดาห์ หมายความว่า user ได้ stream คงที่ของฟีเจอร์ใหม่ ภาษาโปรแกรมอื่น release การเปลี่ยน ใหญ่กว่าน้อยบ่อย — Rust release update เล็กกว่าบ่อยกว่า หลังจากช่วงหนึ่ง การเปลี่ยนเล็ก ๆ ทั้งหมดเหล่านี้รวมกัน แต่จาก release ถึง release มันยากที่จะมองย้อนกลับและบอกว่า “ว้าว ระหว่าง Rust 1.10 และ Rust 1.31, Rust เปลี่ยนเยอะ!”
ทุกสามปีหรือประมาณนั้น team Rust ผลิต Rust edition ใหม่ แต่ละ edition รวมฟีเจอร์ที่ลงมาเป็น package ชัดเจนกับ documentation และ tooling ที่อัพเดทเต็ม Edition ใหม่ ship เป็นส่วนของกระบวนการ release หกสัปดาห์ปกติ
Edition รับใช้จุดประสงค์ต่างกันสำหรับคนต่างกัน:
- สำหรับ user Rust active, edition ใหม่รวมการเปลี่ยน incremental เป็น package ที่เข้าใจง่าย
- สำหรับ non-user, edition ใหม่ signal ว่า advancement หลักบางตัวลงมา ซึ่งอาจทำให้ Rust คุ้มดูอีก
- สำหรับคนที่พัฒนา Rust, edition ใหม่ให้จุดรวมพลสำหรับ project ทั้งหมด
ในเวลาเขียนนี้ สี่ Rust edition ใช้ได้ — Rust 2015, Rust 2018, Rust 2021 และ Rust 2024 หนังสือนี้ถูกเขียนโดยใช้ idiom Rust 2024 edition
Key edition ใน Cargo.toml บ่งบอกว่า edition ใดที่ compiler ควรใช้
สำหรับโค้ดของคุณ ถ้า key ไม่มี Rust ใช้ 2015 เป็นค่า edition เพราะ
เหตุผล backward compatibility
แต่ละ project opt in ไป edition อื่นนอกจาก default edition 2015 ได้ Edition สามารถบรรจุการเปลี่ยนแปลงที่ไม่เข้ากันได้ เช่น รวมคีย์เวิร์ดใหม่ ที่ conflict กับ identifier ในโค้ด อย่างไรก็ตาม เว้นแต่คุณ opt in ไป การเปลี่ยนเหล่านั้น โค้ดของคุณจะ continue compile แม้คุณ upgrade version compiler Rust ที่คุณใช้
Compiler Rust version ทั้งหมดสนับสนุน edition ใดที่มีอยู่ก่อน release ของ compiler นั้น และพวกมัน link crate ของ edition ที่สนับสนุนใดด้วย กันได้ การเปลี่ยน edition เพียงกระทบวิธีที่ compiler parse โค้ดเริ่ม ต้น ดังนั้น ถ้าคุณใช้ Rust 2015 และหนึ่งใน dependency ของคุณใช้ Rust 2018, project ของคุณจะ compile และสามารถใช้ dependency นั้น สถานการณ์ ตรงข้าม ที่ project ของคุณใช้ Rust 2018 และ dependency ใช้ Rust 2015 ทำงานด้วย
เพื่อความชัดเจน — ฟีเจอร์ส่วนใหญ่จะใช้ได้บน edition ทั้งหมด นักพัฒนา ที่ใช้ Rust edition ใดจะ continue เห็นการปรับปรุงเมื่อ stable release ใหม่ถูกทำ อย่างไรก็ตาม ในบางกรณี หลัก ๆ เมื่อคีย์เวิร์ดใหม่ถูกเพิ่ม ฟีเจอร์ใหม่บางตัวอาจใช้ได้เพียงใน edition ภายหลัง คุณจะต้อง switch edition ถ้าคุณต้องการใช้ประโยชน์จากฟีเจอร์เช่นนั้น
สำหรับรายละเอียดเพิ่มเติม ดู The Rust Edition Guide
นี่คือหนังสือสมบูรณ์ที่ enumerate ความแตกต่างระหว่าง edition และ
อธิบายวิธี upgrade โค้ดของคุณไป edition ใหม่อัตโนมัติผ่าน cargo fix