#![allow(unused_macros)]
macro_rules! static_assert {
($cond:expr) => {
const _: [(); 0 - !{
const COND: bool = $cond;
COND
} as usize] = [];
};
}
#[cfg(rustc_1_53)]
macro_rules! bsf {
($mask:expr) => {
match $mask {
#[cfg(target_endian = "little")]
mask => mask.trailing_zeros(),
#[cfg(target_endian = "big")]
mask => mask.leading_zeros(),
}
};
}
#[cfg(not(rustc_1_53))]
macro_rules! bsf {
($mask:expr) => {
match ($mask).get() {
#[allow(unsafe_unsafe)]
0 => unsafe { ::core::hint::unreachable_unchecked() },
#[cfg(target_endian = "little")]
mask => mask.trailing_zeros(),
#[cfg(target_endian = "big")]
mask => mask.leading_zeros(),
}
};
}
#[cfg(feature = "std")]
macro_rules! is_x86_feature_detected {
($feature:tt) => {
::std::is_x86_feature_detected!($feature)
};
}
#[cfg(not(feature = "std"))]
macro_rules! is_x86_feature_detected {
($feature:tt) => {
::core::cfg!(target_feature = $feature)
};
}