diff --git a/globset/src/lib.rs b/globset/src/lib.rs index de5948da..6b3ca85c 100644 --- a/globset/src/lib.rs +++ b/globset/src/lib.rs @@ -292,6 +292,7 @@ pub struct GlobSet { impl GlobSet { /// Create an empty `GlobSet`. An empty set matches nothing. + #[inline] pub fn empty() -> GlobSet { GlobSet { len: 0, @@ -300,11 +301,13 @@ impl GlobSet { } /// Returns true if this set is empty, and therefore matches nothing. + #[inline] pub fn is_empty(&self) -> bool { self.len == 0 } /// Returns the number of globs in this set. + #[inline] pub fn len(&self) -> usize { self.len } diff --git a/globset/src/pathutil.rs b/globset/src/pathutil.rs index 62a68322..6c2fb1e9 100644 --- a/globset/src/pathutil.rs +++ b/globset/src/pathutil.rs @@ -9,12 +9,8 @@ use bstr::BStr; pub fn file_name<'a>(path: &Cow<'a, BStr>) -> Option> { if path.is_empty() { return None; - } else if path.len() == 1 && path[0] == b'.' { - return None; } else if path.last() == Some(b'.') { return None; - } else if path.len() >= 2 && &path[path.len() - 2..] == ".." { - return None; } let last_slash = path.rfind_byte(b'/').map(|i| i + 1).unwrap_or(0); Some(match *path { @@ -47,15 +43,9 @@ pub fn file_name_ext<'a>(name: &Cow<'a, BStr>) -> Option> { if name.is_empty() { return None; } - let last_dot_at = { - let result = name - .bytes().enumerate().rev() - .find(|&(_, b)| b == b'.') - .map(|(i, _)| i); - match result { - None => return None, - Some(i) => i, - } + let last_dot_at = match name.rfind_byte(b'.') { + None => return None, + Some(i) => i, }; Some(match *name { Cow::Borrowed(name) => Cow::Borrowed(&name[last_dot_at..]),