aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-04-14 09:29:00 +0000
committerFuwn <[email protected]>2026-04-14 09:29:00 +0000
commitcb659eff5e8acc5b29d11f089511ab0955f3f785 (patch)
treeff69127437e06a823e2e6dde8a8bf1c5bb8bf2a8 /src
parentperf(router): Eliminate redundant url clone on every request (diff)
downloadarchived-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.rs12
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(),