小编kkp*_*oon的帖子

如何为自定义记录器设置内部状态?

我正在尝试通过实现日志包来实现一个简单的记录器.

记录器的行为应如下所示:

[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

6
推荐指数
1
解决办法
120
查看次数

标签 统计

rust ×1