Unchecked indexing through the regular index syntax.
Using a wrapper type that requires an unsafe
block to create.
Note: All unchecked indexing here is actually “checked” with debug
assertions when they are enabled (they are off by default in release
builds). This is a feature! Debug checking does not make your code safe,
but it helps finding bugs in unsafe
code. Test your code responsibly.
```rust
use uncheckedindex::uncheckedindex;
/// unsafe because: trusts the permutation to be correct
unsafe fn applypermutation
// use unchecked (in reality, debug-checked) indexing throughout
let mut perm = unchecked_index(perm);
for i in 0..perm.len() {
let mut current = i;
while i != perm[current] {
let next = perm[current];
// move element from next to current
v.swap(next, current);
perm[current] = current;
current = next;
}
perm[current] = current;
}
} ```
0.2.0
get_unchecked
and get_unchecked_mut
0.1.1
Copy
impl (for shared slices)0.1.0