diff options
| author | Fuwn <[email protected]> | 2025-09-11 06:24:53 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-09-11 06:24:53 +0000 |
| commit | 6e7600e9b3ced49f8f274fbfdffe8bbf39eabd8e (patch) | |
| tree | ff195761d8b43bcc6318e26a3d56a918ec561732 /src/meta.rs | |
| parent | fix(markdown): Optimise Markdown conversion (diff) | |
| download | germ-6e7600e9b3ced49f8f274fbfdffe8bbf39eabd8e.tar.xz germ-6e7600e9b3ced49f8f274fbfdffe8bbf39eabd8e.zip | |
refactor: Optimise allocations and string operations
Diffstat (limited to 'src/meta.rs')
| -rw-r--r-- | src/meta.rs | 33 |
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(()) } } |