面试题答案
一键面试#[derive(Debug, Clone, Copy)]
enum LogLevel {
DEBUG,
INFO,
WARN,
ERROR,
}
fn log_message(
message: &str,
level: LogLevel,
show_timestamp: bool,
min_level: LogLevel,
) {
if level < min_level {
return;
}
let timestamp = if show_timestamp {
let now = std::time::SystemTime::now()
.duration_since(std::time::SystemTime::UNIX_EPOCH)
.expect("Time went backwards");
format!("[{}] ", now.as_secs())
} else {
String::new()
};
let level_str = match level {
LogLevel::DEBUG => "DEBUG",
LogLevel::INFO => "INFO",
LogLevel::WARN => "WARN",
LogLevel::ERROR => "ERROR",
};
println!("{}{}: {}", timestamp, level_str, message);
}
你可以使用如下方式调用这个函数:
fn main() {
log_message("This is a debug message", LogLevel::DEBUG, true, LogLevel::DEBUG);
log_message("This is an info message", LogLevel::INFO, false, LogLevel::INFO);
log_message("This is a warning message", LogLevel::WARN, true, LogLevel::WARN);
log_message("This is an error message", LogLevel::ERROR, false, LogLevel::ERROR);
}