Mercurial > hg-stable
changeset 48402:2009e3c64a53
rhg: refactor to use IgnoreFnType alias more widely
Differential Revision: https://phab.mercurial-scm.org/D11818
author | Arseniy Alekseyev <aalekseyev@janestreet.com> |
---|---|
date | Mon, 29 Nov 2021 14:06:41 +0000 |
parents | 8960295b9246 |
children | 6d4daf51283c |
files | rust/hg-core/src/matchers.rs |
diffstat | 1 files changed, 10 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/rust/hg-core/src/matchers.rs Thu Nov 11 14:26:25 2021 +0000 +++ b/rust/hg-core/src/matchers.rs Mon Nov 29 14:06:41 2021 +0000 @@ -22,6 +22,7 @@ PatternSyntax, }; +use crate::dirstate::status::IgnoreFnType; use crate::filepatterns::normalize_path_bytes; use std::borrow::ToOwned; use std::collections::HashSet; @@ -246,7 +247,7 @@ /// ``` pub struct IncludeMatcher<'a> { patterns: Vec<u8>, - match_fn: Box<dyn for<'r> Fn(&'r HgPath) -> bool + 'a + Sync>, + match_fn: IgnoreFnType<'a>, /// Whether all the patterns match a prefix (i.e. recursively) prefix: bool, roots: HashSet<HgPathBuf>, @@ -341,9 +342,9 @@ /// Returns the regex pattern and a function that matches an `HgPath` against /// said regex formed by the given ignore patterns. -fn build_regex_match( - ignore_patterns: &[IgnorePattern], -) -> PatternResult<(Vec<u8>, Box<dyn Fn(&HgPath) -> bool + Sync>)> { +fn build_regex_match<'a, 'b>( + ignore_patterns: &'a [IgnorePattern], +) -> PatternResult<(Vec<u8>, IgnoreFnType<'b>)> { let mut regexps = vec![]; let mut exact_set = HashSet::new(); @@ -365,10 +366,10 @@ let func = move |filename: &HgPath| { exact_set.contains(filename) || matcher(filename) }; - Box::new(func) as Box<dyn Fn(&HgPath) -> bool + Sync> + Box::new(func) as IgnoreFnType } else { let func = move |filename: &HgPath| exact_set.contains(filename); - Box::new(func) as Box<dyn Fn(&HgPath) -> bool + Sync> + Box::new(func) as IgnoreFnType }; Ok((full_regex, func)) @@ -476,8 +477,8 @@ /// should be matched. fn build_match<'a, 'b>( ignore_patterns: Vec<IgnorePattern>, -) -> PatternResult<(Vec<u8>, Box<dyn Fn(&HgPath) -> bool + 'b + Sync>)> { - let mut match_funcs: Vec<Box<dyn Fn(&HgPath) -> bool + Sync>> = vec![]; +) -> PatternResult<(Vec<u8>, IgnoreFnType<'b>)> { + let mut match_funcs: Vec<IgnoreFnType<'b>> = vec![]; // For debugging and printing let mut patterns = vec![]; @@ -564,10 +565,7 @@ mut all_pattern_files: Vec<PathBuf>, root_dir: &Path, inspect_pattern_bytes: &mut impl FnMut(&[u8]), -) -> PatternResult<( - Box<dyn for<'r> Fn(&'r HgPath) -> bool + Sync + 'a>, - Vec<PatternFileWarning>, -)> { +) -> PatternResult<(IgnoreFnType<'a>, Vec<PatternFileWarning>)> { let mut all_patterns = vec![]; let mut all_warnings = vec![];