Skip to content

Commit e96e0e2

Browse files
authored
Add support for flume (#680)
* added support for flume * documentation for flume feature * update CHANGELOG.md
1 parent a072ed8 commit e96e0e2

File tree

11 files changed

+47
-0
lines changed

11 files changed

+47
-0
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
# Changelog
22

3+
## notify 9.0.0 (unreleased)
4+
- FEATURE: added support for the [`flume`](https://docs.rs/flume) crate
5+
36
## debouncer-full 0.6.0 (unreleased)
47
- FEATURE: allow `FileIdCache` trait implementations to choose ownership of the returned file-ids
8+
- FEATURE: added support for the [`flume`](https://docs.rs/flume) crate
9+
10+
## debouncer-mini 0.7.0 (unreleased)
11+
- FEATURE: added support for the [`flume`](https://docs.rs/flume) crate
512

613
## file-id 0.2.3 (unreleased)
714
- CHANGE: implement `AsRef<FileId>` for `FileId`

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ edition = "2021"
2121
[workspace.dependencies]
2222
bitflags = "2.7.0"
2323
crossbeam-channel = "0.5.0"
24+
flume = "0.11.1"
2425
deser-hjson = "2.2.4"
2526
env_logger = "0.11.2"
2627
file-id = { version = "0.2.2", path = "file-id" }

notify-debouncer-full/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ default = ["macos_fsevent"]
1717
serde = ["notify-types/serde"]
1818
web-time = ["notify-types/web-time"]
1919
crossbeam-channel = ["dep:crossbeam-channel", "notify/crossbeam-channel"]
20+
flume = ["dep:flume", "notify/flume"]
2021
macos_fsevent = ["notify/macos_fsevent"]
2122
macos_kqueue = ["notify/macos_kqueue"]
2223
serialization-compat-6 = ["notify/serialization-compat-6"]
@@ -25,6 +26,7 @@ serialization-compat-6 = ["notify/serialization-compat-6"]
2526
notify.workspace = true
2627
notify-types.workspace = true
2728
crossbeam-channel = { workspace = true, optional = true }
29+
flume = { workspace = true, optional = true }
2830
file-id.workspace = true
2931
walkdir.workspace = true
3032
log.workspace = true

notify-debouncer-full/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ A debouncer for [notify] that is optimized for ease of use.
1616

1717
- `crossbeam-channel` passed down to notify, off by default
1818

19+
- `flume` passed down to notify, off by default
20+
1921
- `serialization-compat-6` passed down to notify, off by default
2022

2123
[docs]: https://docs.rs/notify-debouncer-full

notify-debouncer-full/src/lib.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
//! - `serde` passed down to notify-types, off by default
5353
//! - `web-time` passed down to notify-types, off by default
5454
//! - `crossbeam-channel` passed down to notify, off by default
55+
//! - `flume` passed down to notify, off by default
5556
//! - `macos_fsevent` passed down to notify, off by default
5657
//! - `macos_kqueue` passed down to notify, off by default
5758
//! - `serialization-compat-6` passed down to notify, off by default
@@ -132,6 +133,13 @@ impl DebounceEventHandler for crossbeam_channel::Sender<DebounceEventResult> {
132133
}
133134
}
134135

136+
#[cfg(feature = "flume")]
137+
impl DebounceEventHandler for flume::Sender<DebounceEventResult> {
138+
fn handle_event(&mut self, event: DebounceEventResult) {
139+
let _ = self.send(event);
140+
}
141+
}
142+
135143
impl DebounceEventHandler for std::sync::mpsc::Sender<DebounceEventResult> {
136144
fn handle_event(&mut self, event: DebounceEventResult) {
137145
let _ = self.send(event);

notify-debouncer-mini/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ repository.workspace = true
1616
default = ["macos_fsevent"]
1717
serde = ["notify-types/serde"]
1818
crossbeam-channel = ["dep:crossbeam-channel", "notify/crossbeam-channel"]
19+
flume = ["dep:flume", "notify/flume"]
1920
macos_fsevent = ["notify/macos_fsevent"]
2021
macos_kqueue = ["notify/macos_kqueue"]
2122
serialization-compat-6 = ["notify/serialization-compat-6"]
@@ -24,5 +25,6 @@ serialization-compat-6 = ["notify/serialization-compat-6"]
2425
notify.workspace = true
2526
notify-types.workspace = true
2627
crossbeam-channel = { workspace = true, optional = true }
28+
flume = { workspace = true, optional = true }
2729
log.workspace = true
2830
tempfile.workspace = true

notify-debouncer-mini/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ Tiny debouncer for [notify]. Filters incoming events and emits only one event pe
88

99
- `crossbeam-channel` passed down to notify, off by default
1010

11+
- `flume` passed down to notify, off by default
12+
1113
- `serde` for serde support of event types, off by default
1214

1315
- `serialization-compat-6` passed down to notify, off by default

notify-debouncer-mini/src/lib.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
//!
4848
//! - `serde` passed down to notify-types, off by default
4949
//! - `crossbeam-channel` passed down to notify, off by default
50+
//! - `flume` passed down to notify, off by default
5051
//! - `macos_fsevent` passed down to notify, off by default
5152
//! - `macos_kqueue` passed down to notify, off by default
5253
//! - `serialization-compat-6` passed down to notify, off by default
@@ -161,6 +162,13 @@ impl DebounceEventHandler for crossbeam_channel::Sender<DebounceEventResult> {
161162
}
162163
}
163164

165+
#[cfg(feature = "flume")]
166+
impl DebounceEventHandler for flume::Sender<DebounceEventResult> {
167+
fn handle_event(&mut self, event: DebounceEventResult) {
168+
let _ = self.send(event);
169+
}
170+
}
171+
164172
impl DebounceEventHandler for std::sync::mpsc::Sender<DebounceEventResult> {
165173
fn handle_event(&mut self, event: DebounceEventResult) {
166174
let _ = self.send(event);

notify/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ serialization-compat-6 = ["notify-types/serialization-compat-6"]
2727
[dependencies]
2828
notify-types.workspace = true
2929
crossbeam-channel = { workspace = true, optional = true }
30+
flume = { workspace = true, optional = true }
3031
filetime.workspace = true
3132
libc.workspace = true
3233
log.workspace = true

notify/src/lib.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,13 @@ impl EventHandler for crossbeam_channel::Sender<Result<Event>> {
262262
}
263263
}
264264

265+
#[cfg(feature = "flume")]
266+
impl EventHandler for flume::Sender<Result<Event>> {
267+
fn handle_event(&mut self, event: Result<Event>) {
268+
let _ = self.send(event);
269+
}
270+
}
271+
265272
impl EventHandler for std::sync::mpsc::Sender<Result<Event>> {
266273
fn handle_event(&mut self, event: Result<Event>) {
267274
let _ = self.send(event);

notify/src/poll.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,13 @@ impl ScanEventHandler for crossbeam_channel::Sender<ScanEvent> {
4343
}
4444
}
4545

46+
#[cfg(feature = "flume")]
47+
impl ScanEventHandler for flume::Sender<ScanEvent> {
48+
fn handle_event(&mut self, event: ScanEvent) {
49+
let _ = self.send(event);
50+
}
51+
}
52+
4653
impl ScanEventHandler for std::sync::mpsc::Sender<ScanEvent> {
4754
fn handle_event(&mut self, event: ScanEvent) {
4855
let _ = self.send(event);

0 commit comments

Comments
 (0)