5 releases

0.2.3 Jan 9, 2022
0.2.2 Dec 12, 2021
0.2.1 Dec 9, 2021
0.2.0 Dec 4, 2021
0.1.0 Dec 4, 2021

#2689 in Filesystem

Download history 954/week @ 2025-11-13 700/week @ 2025-11-20 728/week @ 2025-11-27 843/week @ 2025-12-04 741/week @ 2025-12-11 442/week @ 2025-12-18 177/week @ 2025-12-25 286/week @ 2026-01-01 782/week @ 2026-01-08 1068/week @ 2026-01-15 876/week @ 2026-01-22 911/week @ 2026-01-29 1142/week @ 2026-02-05 1071/week @ 2026-02-12 1596/week @ 2026-02-19 1505/week @ 2026-02-26

5,518 downloads per month

MIT license

49KB
923 lines

fsevent-stream

GitHub Workflow Status crates.io Documentation

Stream-based FSEvents API bindings.

Features

  • Support directory-granular and file-granular events.
  • Retrieve related file inode with kFSEventStreamCreateFlagUseExtendedData.

Example

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
    );
}

Runtime Support

Both tokio and async-std are supported via feature flags.

tokio support is enabled by default. To enable async-std support, disable default features and enable async-std feature.

Acknowledgement

Some code in this project is adapted from the following projects:

License

This project is licensed under MIT License.

FOSSA Status

Dependencies

~0.9–3.5MB
~67K SLoC