aboutsummaryrefslogtreecommitdiff
path: root/src/meta.rs
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-09-11 06:24:53 +0000
committerFuwn <[email protected]>2025-09-11 06:24:53 +0000
commit6e7600e9b3ced49f8f274fbfdffe8bbf39eabd8e (patch)
treeff195761d8b43bcc6318e26a3d56a918ec561732 /src/meta.rs
parentfix(markdown): Optimise Markdown conversion (diff)
downloadgerm-6e7600e9b3ced49f8f274fbfdffe8bbf39eabd8e.tar.xz
germ-6e7600e9b3ced49f8f274fbfdffe8bbf39eabd8e.zip
refactor: Optimise allocations and string operations
Diffstat (limited to 'src/meta.rs')
-rw-r--r--src/meta.rs33
1 files changed, 18 insertions, 15 deletions
diff --git a/src/meta.rs b/src/meta.rs
index 453bbb6..9ec1a89 100644
--- a/src/meta.rs
+++ b/src/meta.rs
@@ -30,22 +30,25 @@ pub struct Meta {
impl Display for Meta {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
- write!(f, "{}{}", self.mime, {
- let mut parameters = self
- .parameters
- .iter()
- .map(|(k, v)| format!("{}={}", *k, v))
- .collect::<Vec<_>>();
-
- parameters.sort();
- parameters.reverse();
-
- if parameters.is_empty() {
- String::new()
- } else {
- format!("; {}", parameters.join("; "))
+ write!(f, "{}", self.mime)?;
+
+ if !self.parameters.is_empty() {
+ write!(f, "; ")?;
+
+ let mut parameters: Vec<_> = self.parameters.iter().collect();
+
+ parameters.sort_by(|a, b| a.0.cmp(b.0));
+
+ for (i, (key, value)) in parameters.iter().enumerate() {
+ if i > 0 {
+ write!(f, "; ")?;
+ }
+
+ write!(f, "{key}={value}")?;
}
- })
+ }
+
+ Ok(())
}
}