我正在尝试通过实现日志包来实现一个简单的记录器.
记录器的行为应如下所示:
[1] First log message
[2] Second log message
[3] Third log message
Run Code Online (Sandbox Code Playgroud)
为了实现这一点,我有我的记录器结构
struct SeqLogger {
seq: i64,
}
Run Code Online (Sandbox Code Playgroud)
并实施Log特质
fn enabled(&self, metadata: &Metadata) -> bool
fn log(&self, record: &Record)
fn flush(&self)
Run Code Online (Sandbox Code Playgroud)
在log(&self, record: &Record)实施中,我会这样做
fn log(&self, record: &Record) {
println!("[{}] {}", self.seq, record.args());
self.seq = self.seq + 1;
}
Run Code Online (Sandbox Code Playgroud)
但是,编译器抱怨这self是不可变的.我是以正确的方式实施这个吗?如何在不更新记录器状态的情况下&mut self?
rust ×1