4e2797dd76
Negating a non-zero integer currently requires unpacking to a primitive and re-wrapping. Since negation of non-zero signed integers always produces a non-zero result, it is safe to implement `Neg` for `NonZeroI{N}`. The new `impl` is marked as stable because trait implementations for two stable types can't be marked unstable.
13 lines
282 B
Rust
13 lines
282 B
Rust
// run-fail
|
|
// error-pattern:thread 'main' panicked at 'attempt to negate with overflow'
|
|
// ignore-emscripten no processes
|
|
// compile-flags: -C debug-assertions
|
|
|
|
#![allow(arithmetic_overflow)]
|
|
|
|
use std::num::NonZeroI8;
|
|
|
|
fn main() {
|
|
let _x = -NonZeroI8::new(i8::MIN).unwrap();
|
|
}
|