aboutsummaryrefslogtreecommitdiff
path: root/src/url.rs
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-01-21 14:50:53 +0000
committerFuwn <[email protected]>2026-01-21 14:50:53 +0000
commit9b0e10ddaeacda3da9d589f7577bcf364609eb9c (patch)
treecae49b769c7c153495550bff2d3a16152afb9151 /src/url.rs
parentchore(Cargo): Bump version patch (diff)
downloadseptember-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.rs33
1 files changed, 14 insertions, 19 deletions
diff --git a/src/url.rs b/src/url.rs
index 5289d28..56858e6 100644
--- a/src/url.rs
+++ b/src/url.rs
@@ -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;
+ }
}
}