#[macro_export] #[doc(hidden)] macro_rules! __unwrap { ($expr:expr) => {{ #[cfg(debug_assertions)] #[allow(unused_unsafe)] unsafe { $expr.unwrap() } #[cfg(not(debug_assertions))] unsafe { $expr.unwrap_unchecked() } }}; } #[macro_export] #[doc(hidden)] macro_rules! __unwrap_panic { ($result:expr) => { match $result { ::core::result::Result::Ok(t) => t, ::core::result::Result::Err(e) => $crate::__panic(&e), } }; } #[inline(never)] #[cold] #[doc(hidden)] pub fn __panic(error: &dyn ::core::fmt::Display) -> ! { ::core::panic!("{error}") } #[macro_export] #[doc(hidden)] macro_rules! __unreachable { () => {{ #[cfg(debug_assertions)] { unreachable!() } #[cfg(not(debug_assertions))] unsafe { ::core::hint::unreachable_unchecked() } }}; } #[macro_export] #[doc(hidden)] macro_rules! __cold_path { () => { ::core::hint::cold_path() }; } pub const LF: &[u8] = b"\n"; #[macro_export] #[doc(hidden)] macro_rules! __print { ($expr:expr) => { $crate::_print($expr.as_bytes()) }; } #[macro_export] #[doc(hidden)] macro_rules! __println { () => { $crate::_print($crate::LF) }; ($expr:expr) => { $crate::_print($expr.as_bytes()); $crate::_print($crate::LF); }; } #[macro_export] #[doc(hidden)] macro_rules! __eprint { ($expr:expr) => { $crate::_eprint($expr.as_bytes()) }; } #[macro_export] #[doc(hidden)] macro_rules! __eprintln { () => { $crate::_eprint($crate::LF) }; ($expr:expr) => { $crate::_eprint($expr.as_bytes()); $crate::_eprint($crate::LF); }; } fn print_to(bytes: &'_ [u8], global_s: fn() -> T, label: &str) where T: std::io::Write, { if let Err(e) = global_s().write_all(bytes) { panic!("failed printing to {label}: {e}"); } } #[doc(hidden)] #[inline] pub fn _print(bytes: &'_ [u8]) { print_to(bytes, std::io::stdout, "stdout"); } #[doc(hidden)] #[inline] pub fn _eprint(bytes: &'_ [u8]) { print_to(bytes, std::io::stderr, "stderr"); }