bitvec
bitvec copied to clipboard
Panic on subtract with overflow in last_one with Msb0
Using current main
branch, using the following code panics:
let b = bits![usize, Msb0; 0];
println!("{:?}", b.last_one());
thread 'main' panicked at 'attempt to subtract with overflow', /Users/zach/.cargo/git/checkouts/bitvec-d0c4461fa4fde381/7d31e86/src/slice/specialization/msb0.rs:178:21
stack backtrace:
0: rust_begin_unwind
at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/panicking.rs:498:5
1: core::panicking::panic_fmt
at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/core/src/panicking.rs:116:14
2: core::panicking::panic
at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/core/src/panicking.rs:48:5
3: bitvec::slice::specialization::msb0::<impl bitvec::slice::BitSlice<T,bitvec::order::Msb0>>::sp_last_one
at /Users/zach/.cargo/git/checkouts/bitvec-d0c4461fa4fde381/7d31e86/src/slice/specialization/msb0.rs:178:6
4: <bitvec::slice::iter::IterOnes<T,O> as core::iter::traits::double_ended::DoubleEndedIterator>::next_back
at /Users/zach/.cargo/git/checkouts/bitvec-d0c4461fa4fde381/7d31e86/src/slice/iter.rs:2129:4
5: bitvec::slice::BitSlice<T,O>::last_one
at /Users/zach/.cargo/git/checkouts/bitvec-d0c4461fa4fde381/7d31e86/src/slice.rs:1203:3
6: bits_last_one::main
at ./src/main.rs:5:22
7: core::ops::function::FnOnce::call_once
at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/core/src/ops/function.rs:227:5
This does not panic if Lsb0
is used instead.