Test case:
use num_traits::Num;
num_bigint::BigUint::from_str_radix("0+2", 10);
will panic instead of returning an Err:
stack backtrace:
...
10: 0x5629031d9e61 - <core::result::Result<T, E>>::unwrap_err::ha2ff9ebcf57c662c
at /checkout/src/libcore/result.rs:789
11: 0x5629031e38db - <num_bigint::biguint::BigUint as num_traits::Num>::from_str_radix::h2b33fa225070b5b3
at .../num-bigint-0.1.36/src/biguint.rs:245
Cause is that num tries to create and unwrap_err a ParseIntError from std by calling parse on s[i..] where i is the index of the +. This will not error out if there are only valid digits after the +.
@Manishearth for the trophy case - found by using cargo-fuzz on serde-pickle