Rust's borrow checker helps preventing data races at compile time, which is also what makes it unique compared to other languages.
A data race happens when the same memory location is accessed and changed concurrently, making its contents dependent on timing, and therefore unpredictable.

The borrow checker avoids this issue at compile time by allowing only one of the following borrows to exist:
- one or more read-only references (`&T`)
- only one mutable reference (`&mut T`)

This way, a resource will not change unexpectedly since only one `&mut` is allowed at a time.
เครื่องมือตรวจสอบการยืมของ Rust ช่วยป้องกันการแข่งขันของข้อมูล ณ เวลารวบรวม ซึ่งเป็นสิ่งที่ทำให้มีเอกลักษณ์เฉพาะตัวเมื่อเทียบกับภาษาอื่นๆ การแข่งขันของข้อมูลเกิดขึ้นเมื่อมีการเข้าถึงและเปลี่ยนแปลงตำแหน่งหน่วยความจำเดียวกันพร้อมกัน ทำให้เนื้อหาขึ้นอยู่กับจังหวะเวลา ดังนั้นจึงไม่สามารถคาดเดาได้ ตัวตรวจสอบการยืมจะหลีกเลี่ยงปัญหานี้ในเวลารวบรวมโดยอนุญาตให้ยืมรายการใดรายการหนึ่งต่อไปนี้เท่านั้น: - ข้อมูลอ้างอิงแบบอ่านอย่างเดียวอย่างน้อย 1 รายการ (`&T`) - รายการอ้างอิงที่ไม่แน่นอนรายการเดียวเท่านั้น (`&mut T`) ด้วยวิธีนี้ ทรัพยากรจะ จะไม่เปลี่ยนแปลงโดยไม่คาดคิด เนื่องจากอนุญาตให้ใช้ `&mut` ได้ครั้งละ 1 รายการเท่านั้น
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence