diff options
author | Jérémie Lawson <jeremielate@gmail.com> | 2017-08-04 01:19:09 +0300 |
---|---|---|
committer | Andrew Gallant <jamslam@gmail.com> | 2017-08-04 01:46:26 +0300 |
commit | 107750f24e1a173c4dfd2b7bb6e495a375e0dfb8 (patch) | |
tree | 25838a626672f26b6cfea4790ceb5e8c5ecd476a | |
parent | 079d1456eb7ba94888a4ce2b82bc814393df7ff4 (diff) |
Make WalkDir Send + Sync
Fixes #41
-rw-r--r-- | src/lib.rs | 5 | ||||
-rw-r--r-- | src/tests.rs | 15 |
2 files changed, 17 insertions, 3 deletions
@@ -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>>(); +} |