gpt4 book ai didi

rust - Rust 中的文件系统监视

转载 作者:行者123 更新时间:2023-12-03 11:26:20 29 4
gpt4 key购买 nike

我正在尝试用 Rust 实现一个文件系统观察器。当文件系统对象发生变化时,我可以接收到事件,但确定发生了什么变化让我很困惑。我在通知包的最新发布版本中找到了代码 here这几乎把我带到了那里。

如何从事件中提取路径和类型?该事件是一个枚举类型,但不知何故,当它被打印时,我看到了我想要的所有信息。

我显然遗漏了一些非常基本的东西。

use notify::{watcher, RecursiveMode, Watcher};
use std::sync::mpsc::channel;
use std::time::Duration;

fn main() {
let (tx, rx) = channel();
let mut watcher = watcher(tx, Duration::from_secs(10)).unwrap();
watcher
.watch("/tmp/path", RecursiveMode::Recursive)
.unwrap();

loop {
match rx.recv() {
Ok(event) => {
// **>> event.filename? event.type? how?
println!("{:?}", event);
}
Err(e) => println!("watch error: {:?}", e),
}
}
}

最佳答案

使用去抖动观察器,您获得的事件类型为 DebouncedEvent .枚举变体指定类型,其内容是路径。要从事件中获取它,您应该匹配所需事件类型的事件:

match &event {
Read(path) => {
// do thing
}
Rename(src, dest) => {
// do other thing
}
_ => () // don't care about other types
}

关于rust - Rust 中的文件系统监视,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62366954/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com