diff options
| author | VillSnow <vill.snow@gmail.com> | 2020-06-28 16:25:33 +0900 |
|---|---|---|
| committer | VillSnow <vill.snow@gmail.com> | 2020-06-28 16:25:33 +0900 |
| commit | 52f976236f0dc1a797578ae41ba1193cbed50677 (patch) | |
| tree | 090311f891a825ae681c831633d99a37bc22ca64 /src/libcore | |
| parent | 8cc6998cd460f8534b3cf643a7620354bd007856 (diff) | |
| download | rust-52f976236f0dc1a797578ae41ba1193cbed50677.tar.gz rust-52f976236f0dc1a797578ae41ba1193cbed50677.zip | |
Add comment on use of unsafe
Diffstat (limited to 'src/libcore')
| -rw-r--r-- | src/libcore/slice/mod.rs | 9 |
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; |
