Vì việc kiểm tra chỉ mục tại thời điểm biên dịch là không khả thi. Lý do về các giá trị có thể có của các biến tùy ý là ở đâu đó giữa cứng và không thể ngay cả đối với các chương trình nhỏ. Không ai muốn phải:
- chính thức chứng minh rằng chỉ số không thể nằm ngoài giới hạn, và
- mã hóa mà bằng chứng vào loại hệ thống
... cho mỗi đơn slice/Vec/etc. truy cập. Vì đó là những gì bạn phải làm để thực hiện kiểm tra giới hạn tại thời gian biên dịch. Về cơ bản, bạn cần nhập văn bản phụ thuộc. Ngoài việc có thể làm cho việc kiểm tra kiểu không thể xác định được (và nhận được một chương trình kiểm tra kiểu khó hơn), kiểu suy luận trở thành không thể nói chung (và bị hạn chế nhiều hơn trong trường hợp tốt nhất), các kiểu phức tạp hơn và dài dòng hơn, và sự phức tạp của ngôn ngữ tăng lên đáng kể. Các chỉ số đó nằm trong giới hạn chỉ có thể được chứng minh mà không cần nỗ lực lập trình bổ sung đáng kể trong các trường hợp rất đơn giản.
Hơn nữa, có rất ít động lực để thoát khỏi kiểm tra giới hạn. Thời gian sống kéo trọng lượng của họ bằng cách loại bỏ hoàn toàn nhu cầu thu gom rác thải --- đó là một tính năng rất lớn, xâm lấn với thông lượng không lường trước được, không gian và độ trễ. Kiểm tra giới hạn thời gian chạy là rất không xâm lấn, có một chi phí nhỏ và nổi tiếng, và có thể được chọn lọc trong các phần quan trọng về hiệu năng ngay cả khi toàn bộ phần còn lại của chương trình sử dụng nó một cách tự do.
bản sao có thể có của [Tại sao trình biên dịch Rust cho phép lập chỉ mục ngoài giới hạn?] (Http://stackoverflow.com/questions/24898579/why-does-rust-compiler-allow-index-out-of-bounds) – Shepmaster