diff options
| author | Fuwn <[email protected]> | 2026-04-14 09:29:00 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-04-14 09:29:00 +0000 |
| commit | cb659eff5e8acc5b29d11f089511ab0955f3f785 (patch) | |
| tree | ff69127437e06a823e2e6dde8a8bf1c5bb8bf2a8 /src | |
| parent | perf(router): Eliminate redundant url clone on every request (diff) | |
| download | archived-windmark-cb659eff5e8acc5b29d11f089511ab0955f3f785.tar.xz archived-windmark-cb659eff5e8acc5b29d11f089511ab0955f3f785.zip | |
perf(router): Cache joined languages string at RequestHandler construction
Diffstat (limited to 'src')
| -rw-r--r-- | src/router.rs | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/router.rs b/src/router.rs index 1b028a9..81ae1a1 100644 --- a/src/router.rs +++ b/src/router.rs @@ -105,7 +105,7 @@ struct RequestHandler { pre_route_callback: Arc<Box<dyn PreRouteHook>>, post_route_callback: Arc<Box<dyn PostRouteHook>>, character_set: String, - languages: Vec<String>, + languages_joined: String, async_modules: Arc<AsyncMutex<Vec<Box<dyn AsyncModule + Send>>>>, modules: Arc<Mutex<Vec<Box<dyn Module + Send>>>>, options: HashSet<RouterOption>, @@ -275,10 +275,10 @@ impl RequestHandler { .character_set .as_deref() .unwrap_or(&self.character_set); - let lang = content - .languages - .as_ref() - .map_or_else(|| self.languages.join(","), |l| l.join(",")); + let lang = content.languages.as_ref().map_or_else( + || std::borrow::Cow::Borrowed(self.languages_joined.as_str()), + |l| std::borrow::Cow::Owned(l.join(",")), + ); format!("{status_code} {mime}; charset={charset}; lang={lang}") } @@ -581,7 +581,7 @@ impl Router { pre_route_callback: self.pre_route_callback.clone(), post_route_callback: self.post_route_callback.clone(), character_set: self.character_set.clone(), - languages: self.languages.clone(), + languages_joined: self.languages.join(","), async_modules: self.async_modules.clone(), modules: self.modules.clone(), options: self.options.clone(), |