use aurora_engine_types::str::from_utf8; use near_sdk::env::panic_str; const INVALID_UTF8_ERR_STRING: &str = "INVALID_UTF8_ERR_STRING"; #[macro_export] macro_rules! log { ($($args:tt)*) => { #[cfg(feature = "log")] near_sdk::log!("{}", format_args!($($args)*)) }; } /// Panic with the message from the error argument. pub fn panic_err>(err: E) -> ! { panic_str(err_to_str(&err)) } pub trait SdkExpect { fn sdk_expect(self, msg: &str) -> T; } impl SdkExpect for Option { fn sdk_expect(self, msg: &str) -> T { self.unwrap_or_else(|| panic_str(msg)) } } impl SdkExpect for Result { fn sdk_expect(self, msg: &str) -> T { self.unwrap_or_else(|_| panic_str(msg)) } } pub trait SdkUnwrap { fn sdk_unwrap(self) -> T; } impl SdkUnwrap for Option { fn sdk_unwrap(self) -> T { self.unwrap_or_else(|| panic_str("ERR_UNWRAP")) } } impl> SdkUnwrap for Result { fn sdk_unwrap(self) -> T { self.unwrap_or_else(|e| panic_str(err_to_str(&e))) } } fn err_to_str>(err: &E) -> &str { from_utf8(err.as_ref()).unwrap_or(INVALID_UTF8_ERR_STRING) }