@auto_increment enum LogLevel { Error = 0, Warn, Info, Debug, Trace, } @auto_increment enum LogResult { Err = 0, Ok, } struct Log { log_level: LogLevel, } @visibility(public) protocol Log { fn log(Log) -> LogResult; fn flush() -> LogResult; }