6个版本
0.1.40 | 2021年3月25日 |
---|---|
0.1.37 | 2021年3月8日 |
#19 in #文件观察器
24KB
474 行
四目望远镜
基于notify-rs的并发、可组合的简单文件观察器。
特性
- 易于使用单文件和多文件观察器
- 仅在文件数据发生变化时通知
- 容错,即使文件被替换也能继续观察,文件不存在时优雅地关闭自身。
- 为DeserializeToOwned结构提供快速的实时重新加载值。
安装
在您的Cargo.toml
中添加quadoculars
作为依赖项
quadoculars = "*"
或者
quadoculars = { git = "https://github.com/Ar37-rs/quadoculars.git" }
快速示例
use quadoculars::{Fstate, Watch};
use std::{
io::Result,
path::{Path, PathBuf},
str::FromStr,
sync::mpsc::channel,
};
fn main() -> Result<()> {
let file: PathBuf;
{
match PathBuf::from_str("filename.extention") {
Ok(file_) => file = file_,
_ => file = Path::new("otherfilename.otherextension").to_path_buf(),
}
}
let (tx, rx) = channel();
while let Ok(file_exist) = Watch::new().set_timeout(0.6).single_file(&file,tx.clone()) {
if !file_exist {
println!("no file to watch");
break;
} else {
println!("watching... {:?}", file)
}
for state in &rx {
match state {
Fstate::Changed(file) => {
println!("{:?} changed", file);
// do something...
}
Fstate::NotFound(file) => {
// handle something...
break;
}
}
}
}
Ok(())
}
更多示例
关于观察多个文件和实时重新加载值的示例可以在这里找到。
依赖项
~0.7–12MB
~86K SLoC