serde_v8vs 0.1.0

serde support for V8's ValueSerializer format
Documentation
pub fn is_int(x: f64) -> bool {
	let mut e = (x.to_bits() >> 52 & 0x7FF) - 0x3FF + 12;
	if e >= 52 + 12 {
		return true;
	}
	if e < 12 {
		e = 1;
	}
	let m = u64::MAX >> e;
	if x.to_bits() & m == 0 {
		return true;
	}

	x.to_bits() & !m == x.to_bits()
}

#[cfg(not(feature = "std"))]
#[allow(unused)]
macro_rules! is_x86_feature_detected {
	($feature:expr) => {
		cfg!(all(target_arch = "x86_64", target_feature = $feature))
	};
}
#[cfg(not(feature = "std"))]
#[allow(unused)]
macro_rules! is_aarch64_feature_detected {
	($feature:expr) => {
		cfg!(all(target_arch = "aarch64", target_feature = $feature))
	};
}
#[cfg(not(feature = "std"))]
#[allow(unused)]
pub(crate) use {is_aarch64_feature_detected, is_x86_feature_detected};

#[rustfmt::skip] // wtf stop moving this
#[cfg(feature = "std")]
#[allow(unused)]
pub use std::arch::{is_aarch64_feature_detected, is_x86_feature_detected};

#[cfg(test)]
mod tests {
	use core::f64;

	use super::is_int;

	#[test]
	fn test_is_int() {
		assert!(is_int(1.));
		assert!(is_int(-496.));
		assert!(!is_int(1.5));
		assert!(is_int(9007199254740991.));
		assert!(!is_int(f64::consts::PI));
	}
}