1use core::fmt::Debug;
2use core::hint::unreachable_unchecked;
3
4#[derive(Debug)]
6pub enum Never {}
7
8pub fn is_older_version(a: u32, b: u32) -> bool {
11 let diff = a.wrapping_sub(b);
12 diff >= (1 << 31)
13}
14
15pub trait UnwrapUnchecked<T> {
18 unsafe fn unwrap_unchecked_(self) -> T;
20}
21
22impl<T> UnwrapUnchecked<T> for Option<T> {
23 unsafe fn unwrap_unchecked_(self) -> T {
24 if cfg!(debug_assertions) {
25 self.unwrap()
26 } else {
27 match self {
28 Some(x) => x,
29 None => unreachable_unchecked(),
30 }
31 }
32 }
33}
34
35impl<T, E: Debug> UnwrapUnchecked<T> for Result<T, E> {
36 unsafe fn unwrap_unchecked_(self) -> T {
37 if cfg!(debug_assertions) {
38 self.unwrap()
39 } else {
40 match self {
41 Ok(x) => x,
42 Err(_) => unreachable_unchecked(),
43 }
44 }
45 }
46}