about summary refs log tree commit diff
path: root/src/libcore
diff options
context:
space:
mode:
authorVillSnow <vill.snow@gmail.com>2020-06-28 16:25:33 +0900
committerVillSnow <vill.snow@gmail.com>2020-06-28 16:25:33 +0900
commit52f976236f0dc1a797578ae41ba1193cbed50677 (patch)
tree090311f891a825ae681c831633d99a37bc22ca64 /src/libcore
parent8cc6998cd460f8534b3cf643a7620354bd007856 (diff)
downloadrust-52f976236f0dc1a797578ae41ba1193cbed50677.tar.gz
rust-52f976236f0dc1a797578ae41ba1193cbed50677.zip
Add comment on use of unsafe
Diffstat (limited to 'src/libcore')
-rw-r--r--src/libcore/slice/mod.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/libcore/slice/mod.rs b/src/libcore/slice/mod.rs
index a07690bc669..3b51f973ffb 100644
--- a/src/libcore/slice/mod.rs
+++ b/src/libcore/slice/mod.rs
@@ -2694,6 +2694,15 @@ impl<T> [T] {
 
         while left != right {
             let mid = left + (right - left) / 2;
+            // SAFETY:
+            // When left < right, left <= mid < right.
+            // Therefore left always increases and right always decreases,
+            // and eigher of them is selected.
+            // In both cases left <= right is satisfied.
+            // Therefore if left < right in a step,
+            // left <= right is satisfied in the next step.
+            // Therefore as long as left != right, 0 <= left < right <= len is satisfied
+            // and if this case 0 <= mid < len is satisfied too.
             let value = unsafe { self.get_unchecked(mid) };
             if pred(value) {
                 left = mid + 1;