use solana_program::program_error::ProgramError;
#[inline(always)]
pub fn log(msg: String) {
solana_program::log::sol_log(msg.as_str());
}
#[track_caller]
pub fn trace(msg: &str, error: ProgramError) -> ProgramError {
let caller = std::panic::Location::caller();
log(format!("{}: {}", msg, caller));
error
}
pub trait Loggable {
fn log(&self);
fn log_return(&self);
}