การจัดการหน่วยความจำอัตโนมัติของ Rust ช่วยให้นักพัฒนาเป็นอิสระจากการจัดการพอยน์เตอร์ และป้องกันปัญหาที่เกิดจากการจัดการหน่วยความจำระดับต่ำ เช่น การเข้าถึงหน่วยความจำหลังจากว่าง การยกเลิกการอ้างอิงพอยน์เตอร์ null บัฟเฟอร์โอเวอร์รัน และอื่นๆ ที่คล้ายกัน ตัวจัดการแพ็คเกจกำลังได้รับการพัฒนาเพื่อแจกจ่ายไลบรารี ตรวจสอบการประกอบและจัดการการพึ่งพาโดยโปรเจ็กต์
หลัก
- มาโครให้ความสามารถในการใช้แฟรกเมนต์ขององค์ประกอบเพื่อแปลงให้เป็นโค้ดสำหรับลักษณะ (ลักษณะ) การใช้งาน (impl) หรือบล็อกภายนอก ตัวอย่างเช่น:
มาโคร_กฎ! mac_trait {
($i:รายการ) => {
ลักษณะ T { $i }
}
}
mac_trait! {
fn ฟู() {}
}จะนำไปสู่การสร้าง:
ลักษณะ T {
fn ฟู() {}
} - ปรับปรุงการตรวจจับประเภทของการดำเนินการดั้งเดิม การอ้างอิง และไบนารี่
ตัวอย่างเช่น รหัสต่อไปนี้ซึ่งก่อนหน้านี้ทำให้เกิดข้อผิดพลาด จะสามารถคอมไพล์ได้แล้ว (ตอนนี้ Rust กำหนดอย่างถูกต้องแล้วว่า 0.0 และ &0.0 ต้องเป็นประเภท f32):ให้ n: f32 = 0.0 + &0.0;
- มีการเพิ่มตัวแปรสภาพแวดล้อมใหม่ CARGO_BIN_EXE_{name} ให้กับ Cargo ซึ่งได้รับการตั้งค่าเมื่อสร้างการทดสอบการรวมระบบ และช่วยให้คุณสามารถกำหนดเส้นทางแบบเต็มไปยังไฟล์ปฏิบัติการที่กำหนดไว้ในส่วน "[[bin]]" ของแพ็คเกจได้
- หากคำสั่งได้รับอนุญาตให้ใช้แอตทริบิวต์เช่น "#[cfg()]"
- ไลบรารีให้ความสามารถในการใช้ค่าคงที่ที่เกี่ยวข้องโดยตรงสำหรับประเภทจำนวนเต็มและเศษส่วน โดยไม่ต้องนำเข้าโมดูล ตัวอย่างเช่น คุณสามารถเขียน u32::MAX หรือ f32::NAN ได้ทันทีโดยไม่ต้องระบุ “use std::u32” และ “use std::f32” ก่อน
- เพิ่มโมดูลใหม่แล้ว
ดั้งเดิม ซึ่งจะส่งออกประเภทดั้งเดิมของ Rust อีกครั้ง เช่น เมื่อคุณต้องการเขียนมาโครและตรวจให้แน่ใจว่าไม่ได้ซ่อนประเภทไว้ - ส่วนใหม่ของ API ได้ถูกโอนไปยังหมวดหมู่เสถียร รวมถึงเสถียรด้วย
เมื่อ::is_เสร็จสมบูรณ์
f32::LOG10_2,
f32::LOG2_10,
f64::LOG10_2,
f64::LOG2_10 และ
มัน::once_with.
ที่มา: opennet.ru