diff options
| author | Fuwn <[email protected]> | 2026-01-21 14:50:53 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-01-21 14:50:53 +0000 |
| commit | 9b0e10ddaeacda3da9d589f7577bcf364609eb9c (patch) | |
| tree | cae49b769c7c153495550bff2d3a16152afb9151 /src/url.rs | |
| parent | chore(Cargo): Bump version patch (diff) | |
| download | september-9b0e10ddaeacda3da9d589f7577bcf364609eb9c.tar.xz september-9b0e10ddaeacda3da9d589f7577bcf364609eb9c.zip | |
fix(html,url): Resolve clippy pedantic lints and reduce allocations
Diffstat (limited to 'src/url.rs')
| -rw-r--r-- | src/url.rs | 33 |
1 files changed, 14 insertions, 19 deletions
@@ -63,11 +63,11 @@ pub fn matches_pattern(pattern: &str, path: &str) -> bool { return path == pattern; } - let parts: Vec<&str> = pattern.split('*').collect(); + let mut parts = pattern.split('*').peekable(); let mut position = if pattern.starts_with('*') { 0 } else { - let first = parts.first().unwrap(); + let first = parts.next().unwrap_or(""); if !path.starts_with(first) { return false; @@ -75,25 +75,20 @@ pub fn matches_pattern(pattern: &str, path: &str) -> bool { first.len() }; - let before_last = parts.len().saturating_sub(1); - for part in &parts[1..before_last] { - if part.is_empty() { - continue; - } + while let Some(part) = parts.next() { + let is_last = parts.peek().is_none(); - if let Some(found) = path[position..].find(part) { - position += found + part.len(); - } else { - return false; - } - } - - if !pattern.ends_with('*') { - let last = parts.last().unwrap(); - - if !path[position..].ends_with(last) { - return false; + if is_last { + if !pattern.ends_with('*') && !path[position..].ends_with(part) { + return false; + } + } else if !part.is_empty() { + if let Some(found) = path[position..].find(part) { + position += found + part.len(); + } else { + return false; + } } } |