diff --git a/router/src/resource.rs b/router/src/resource.rs index d3b3972d..2ab4ceb5 100644 --- a/router/src/resource.rs +++ b/router/src/resource.rs @@ -167,13 +167,13 @@ impl ResourceDef { /// Is prefix path a match against this resource. pub fn is_prefix_match(&self, path: &str) -> Option { - let plen = path.len(); + let p_len = path.len(); let path = if path.is_empty() { "/" } else { path }; match self.tp { PatternType::Static(ref s) => { if s == path { - Some(plen) + Some(p_len) } else { None } @@ -211,7 +211,7 @@ impl ResourceDef { } else { return None; }; - Some(min(plen, len)) + Some(min(p_len, len)) } PatternType::DynamicSet(ref re, ref params) => { if let Some(idx) = re.matches(path).into_iter().next() { @@ -252,11 +252,11 @@ impl ResourceDef { } } PatternType::Prefix(ref s) => { - let rpath = path.path(); - let len = if s == rpath { + let r_path = path.path(); + let len = if s == r_path { s.len() - } else if rpath.starts_with(s) - && (s.ends_with('/') || rpath.split_at(s.len()).1.starts_with('/')) + } else if r_path.starts_with(s) + && (s.ends_with('/') || r_path.split_at(s.len()).1.starts_with('/')) { if s.ends_with('/') { s.len() - 1 @@ -266,8 +266,8 @@ impl ResourceDef { } else { return false; }; - let rpath_len = rpath.len(); - path.skip(min(rpath_len, len) as u16); + let r_path_len = r_path.len(); + path.skip(min(r_path_len, len) as u16); true } PatternType::Dynamic(ref re, ref names, len) => { @@ -361,11 +361,11 @@ impl ResourceDef { } PatternType::Prefix(ref s) => { let len = { - let rpath = res.resource_path().path(); - if s == rpath { + let r_path = res.resource_path().path(); + if s == r_path { s.len() - } else if rpath.starts_with(s) - && (s.ends_with('/') || rpath.split_at(s.len()).1.starts_with('/')) + } else if r_path.starts_with(s) + && (s.ends_with('/') || r_path.split_at(s.len()).1.starts_with('/')) { if s.ends_with('/') { s.len() - 1 @@ -580,6 +580,8 @@ impl ResourceDef { mut for_prefix: bool, ) -> (String, Vec, bool, usize) { if pattern.find('{').is_none() { + // TODO: MSRV: 1.45 + #[allow(clippy::manual_strip)] return if pattern.ends_with('*') { let path = &pattern[..pattern.len() - 1]; let re = String::from("^") + path + "(.*)"; @@ -594,39 +596,39 @@ impl ResourceDef { }; } - let mut elems = Vec::new(); + let mut elements = Vec::new(); let mut re = String::from("^"); - let mut dyn_elems = 0; + let mut dyn_elements = 0; while let Some(idx) = pattern.find('{') { let (prefix, rem) = pattern.split_at(idx); - elems.push(PatternElement::Str(String::from(prefix))); + elements.push(PatternElement::Str(String::from(prefix))); re.push_str(&escape(prefix)); let (param_pattern, re_part, rem, tail) = Self::parse_param(rem); if tail { for_prefix = true; } - elems.push(param_pattern); + elements.push(param_pattern); re.push_str(&re_part); pattern = rem; - dyn_elems += 1; + dyn_elements += 1; } - elems.push(PatternElement::Str(String::from(pattern))); + elements.push(PatternElement::Str(String::from(pattern))); re.push_str(&escape(pattern)); - if dyn_elems > MAX_DYNAMIC_SEGMENTS { + if dyn_elements > MAX_DYNAMIC_SEGMENTS { panic!( - "Only {} dynanic segments are allowed, provided: {}", - MAX_DYNAMIC_SEGMENTS, dyn_elems + "Only {} dynamic segments are allowed, provided: {}", + MAX_DYNAMIC_SEGMENTS, dyn_elements ); } if !for_prefix { re.push('$'); } - (re, elems, true, pattern.chars().count()) + (re, elements, true, pattern.chars().count()) } } @@ -718,10 +720,10 @@ mod tests { assert!(!re.is_match("/v/resource/1")); assert!(!re.is_match("/resource")); - let mut path = Path::new("/v151/resource/adahg32"); + let mut path = Path::new("/v151/resource/adage32"); assert!(re.match_path(&mut path)); assert_eq!(path.get("version").unwrap(), "151"); - assert_eq!(path.get("id").unwrap(), "adahg32"); + assert_eq!(path.get("id").unwrap(), "adage32"); let re = ResourceDef::new("/{id:[[:digit:]]{6}}"); assert!(re.is_match("/012345")); @@ -759,10 +761,10 @@ mod tests { assert!(!re.is_match("/v/resource/1")); assert!(!re.is_match("/resource")); - let mut path = Path::new("/v151/resource/adahg32"); + let mut path = Path::new("/v151/resource/adage32"); assert!(re.match_path(&mut path)); assert_eq!(path.get("version").unwrap(), "151"); - assert_eq!(path.get("id").unwrap(), "adahg32"); + assert_eq!(path.get("id").unwrap(), "adage32"); assert!(re.is_match("/012345")); assert!(!re.is_match("/012")); diff --git a/router/src/url.rs b/router/src/url.rs index 6a4195b8..d2dd7a19 100644 --- a/router/src/url.rs +++ b/router/src/url.rs @@ -182,11 +182,11 @@ impl Quoter { #[inline] fn from_hex(v: u8) -> Option { - if v >= b'0' && v <= b'9' { + if (b'0'..=b'9').contains(&v) { Some(v - 0x30) // ord('0') == 0x30 - } else if v >= b'A' && v <= b'F' { + } else if (b'A'..=b'F').contains(&v) { Some(v - 0x41 + 10) // ord('A') == 0x41 - } else if v >= b'a' && v <= b'f' { + } else if (b'a'..=b'f').contains(&v) { Some(v - 0x61 + 10) // ord('a') == 0x61 } else { None