Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/windirstat/walkdir.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJérémie Lawson <jeremielate@gmail.com>2017-08-04 01:19:09 +0300
committerAndrew Gallant <jamslam@gmail.com>2017-08-04 01:46:26 +0300
commit107750f24e1a173c4dfd2b7bb6e495a375e0dfb8 (patch)
tree25838a626672f26b6cfea4790ceb5e8c5ecd476a
parent079d1456eb7ba94888a4ce2b82bc814393df7ff4 (diff)
Make WalkDir Send + Sync
Fixes #41
-rw-r--r--src/lib.rs5
-rw-r--r--src/tests.rs15
2 files changed, 17 insertions, 3 deletions
diff --git a/src/lib.rs b/src/lib.rs
index e9c2eda..fd848d5 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -126,7 +126,6 @@ use std::fmt;
use std::fs::{self, FileType, ReadDir};
use std::io;
use std::ffi::OsStr;
-use std::ffi::OsString;
use std::path::{Path, PathBuf};
use std::result;
use std::vec;
@@ -252,7 +251,7 @@ struct WalkDirOptions {
max_open: usize,
min_depth: usize,
max_depth: usize,
- sorter: Option<Box<FnMut(&DirEntry,&DirEntry) -> Ordering + 'static>>,
+ sorter: Option<Box<FnMut(&DirEntry,&DirEntry) -> Ordering + Send + Sync + 'static>>,
contents_first: bool,
}
@@ -382,7 +381,7 @@ impl WalkDir {
/// WalkDir::new("foo").sort_by(|a,b| a.file_name().cmp(b.file_name()));
/// ```
pub fn sort_by<F>(mut self, cmp: F) -> Self
- where F: FnMut(&DirEntry, &DirEntry) -> Ordering + 'static {
+ where F: FnMut(&DirEntry, &DirEntry) -> Ordering + Send + Sync + 'static {
self.opts.sorter = Some(Box::new(cmp));
self
}
diff --git a/src/tests.rs b/src/tests.rs
index f529a25..3e97994 100644
--- a/src/tests.rs
+++ b/src/tests.rs
@@ -792,3 +792,18 @@ fn walk_dir_sort_small_fd_max() {
assert_eq!(got,
["", "/foo", "/foo/abc", "/foo/abc/fit", "/foo/bar", "/foo/faz"]);
}
+
+#[test]
+fn walk_dir_send_sync_traits() {
+ use FilterEntry;
+
+ fn assert_send<T: Send>() {}
+ fn assert_sync<T: Sync>() {}
+
+ assert_send::<WalkDir>();
+ assert_sync::<WalkDir>();
+ assert_send::<IntoIter>();
+ assert_sync::<IntoIter>();
+ assert_send::<FilterEntry<IntoIter, u8>>();
+ assert_sync::<FilterEntry<IntoIter, u8>>();
+}