【发布时间】:2015-05-13 00:21:54
【问题描述】:
我正在尝试实现log::Log,以便对log() 的调用将消息附加到文件中。这是我目前的记录器:
pub struct MyLogger {
loglevel: LogLevelFilter,
logfile: Option<File>,
}
以及log::Log的实现:
impl Log for Logger {
fn enabled(&self, metadata: &LogMetadata) -> bool {
metadata.level() <= self.loglevel
}
fn log(&self, record: &LogRecord) {
if self.enabled(record.metadata()) {
let msg = format!("{}\t| {}\t| {}", record.level(), record.target(), record.args());
self.logfile.write_all(msg.as_bytes()).unwrap();
}
}
}
这是可以理解的,因为log() 没有采用可变引用,所以失败了。我不能采用可变引用,因为那样我就无法正确实现该类型,那么实现这一点的惯用方法是什么?
【问题讨论】: