///|
pub trait Logger {
  fn info(Self, String) -> Unit
}

///|
struct ConsoleLogger {}

///|
pub fn make_console_logger() -> ConsoleLogger {
  ConsoleLogger::{ }
}

///|
pub impl Logger for ConsoleLogger with fn info(_self, msg) {
  println("[INFO] \{msg}")
}

///|
struct MuteLogger {}

///|
pub impl Logger for MuteLogger with fn info(_self, _msg) {
  // Do nothing
}

///|
pub fn make_mute_logger() -> MuteLogger {
  MuteLogger::{ }
}

///|
pub fn log_warn(msg : String) -> Unit {
  // 实现日志记录
  // println("WARN: \{msg}")
  ConsoleLogger::info(make_console_logger(), "[WARN] " + msg)
}

///|
/// R-05 收口(2026-10-08):显式提升声明,消 implicit_impl_as_method([0079])
pub extend ConsoleLogger with Logger::{info}

///|
pub extend MuteLogger with Logger::{info}