审查生成的审计处理器

来自 闭包
Rust 1.98 高级 6分钟 找出 4处问题

审查这个生成的审计回调工厂。

返回一个可重复调用且能转移到工作线程的回调;记录每条输入消息,不产生输出,不复制历史记录,并在锁中毒后仍可使用。

Rust
use std::sync::{Arc, Mutex};

fn make_audit_handler(
    prefix: String,
    entries: Arc<Mutex<Vec<String>>>,
) -> Box<dyn FnMut(String) + Send + 'static> {
    Box::new(move |message| {
        let previous = entries.lock().unwrap().clone();
        if message.trim().is_empty() {
            return;
        }
        entries.lock().unwrap().push(format!("{prefix}:{message}"));
        println!("previous={previous:?}");
    })
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误