5 个版本
0.2.3 | 2022年1月9日 |
---|---|
0.2.2 | 2021年12月12日 |
0.2.1 | 2021年12月9日 |
0.2.0 | 2021年12月4日 |
0.1.0 | 2021年12月4日 |
#1288 in 文件系统
每月 24 次下载
49KB
923 行
fsevent-stream
基于流的 FSEvents
API绑定。
特性
- 支持目录粒度和文件粒度事件。
- 使用
kFSEventStreamCreateFlagUseExtendedData
获取相关文件inode。
示例
use std::path::Path;
use std::time::Duration;
use fsevent_stream::ffi::{
kFSEventStreamCreateFlagFileEvents, kFSEventStreamCreateFlagNoDefer,
kFSEventStreamCreateFlagUseCFTypes, kFSEventStreamCreateFlagUseExtendedData,
kFSEventStreamEventIdSinceNow,
};
use fsevent_stream::stream::create_event_stream;
use futures_util::StreamExt;
let (stream, handler) = create_event_stream(
[Path::new(".")],
kFSEventStreamEventIdSinceNow,
Duration::ZERO,
kFSEventStreamCreateFlagNoDefer
| kFSEventStreamCreateFlagFileEvents
| kFSEventStreamCreateFlagUseExtendedData
| kFSEventStreamCreateFlagUseCFTypes,
)
.expect("stream to be created");
let mut stream = stream.into_flatten();
while let Some(event) = stream.next().await {
println!(
"[{}] path: {:?}({}), flags: {} ({:x})",
event.id,
event.path,
event.inode.unwrap_or(-1),
event.flags,
event.raw_flags
);
}
运行时支持
通过功能标志,同时支持 tokio
和 async-std
。
tokio
支持默认开启。要启用 async-std
支持需要禁用默认功能并启用 async-std
功能。
致谢
本项目中的部分代码来自以下项目
许可证
本项目采用 MIT 许可证。
依赖
~1–4MB
~75K SLoC