Crate dont_panic_slice [] [src]

Non-panicking drop-in replacement for slices. Instead of panic it causes link time error if bounds are not checked. (Not fully drop-in replacement yet. Some features are missing.)


extern crate dont_panic_slice;

use dont_panic_slice::DPSlice;

fn main() {
    let arr = [0, 1, 2, 3];
    let dps = <&DPSlice<_>>::from(&arr as &[_]);
    assert_eq!(dps[0], 0);
    assert_eq!(dps[3], 3);
    // This would not compile (instead of run time panicking)
    assert_eq!(dps[42], 42);

You must compile it with --release. If you don't want to slow down debug builds, you can use --features=panic to switch to normal panicking behaviour.