🦠 The Definitive Gemini Protocol Toolkit
gemini gemini-protocol gemtext parser zero-dependency toolkit ast converter html markdown cli networking
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

refactor: Optimise allocations and string operations

Fuwn 6e7600e9 a786497c

+21 -17
+16 -13
src/meta.rs
··· 30 30 31 31 impl Display for Meta { 32 32 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { 33 - write!(f, "{}{}", self.mime, { 34 - let mut parameters = self 35 - .parameters 36 - .iter() 37 - .map(|(k, v)| format!("{}={}", *k, v)) 38 - .collect::<Vec<_>>(); 33 + write!(f, "{}", self.mime)?; 34 + 35 + if !self.parameters.is_empty() { 36 + write!(f, "; ")?; 37 + 38 + let mut parameters: Vec<_> = self.parameters.iter().collect(); 39 + 40 + parameters.sort_by(|a, b| a.0.cmp(b.0)); 39 41 40 - parameters.sort(); 41 - parameters.reverse(); 42 + for (i, (key, value)) in parameters.iter().enumerate() { 43 + if i > 0 { 44 + write!(f, "; ")?; 45 + } 42 46 43 - if parameters.is_empty() { 44 - String::new() 45 - } else { 46 - format!("; {}", parameters.join("; ")) 47 + write!(f, "{key}={value}")?; 47 48 } 48 - }) 49 + } 50 + 51 + Ok(()) 49 52 } 50 53 } 51 54
+5 -4
src/request/response.rs
··· 35 35 .position(|window| window == delimiter) 36 36 .map_or(data.len(), |pos| pos + delimiter.len()); 37 37 let header_bytes = &data[..header_end]; 38 - let header = String::from_utf8_lossy(header_bytes).trim_end().to_string(); 38 + let header_cow = String::from_utf8_lossy(header_bytes); 39 + let header_trimmed = header_cow.trim_end(); 39 40 let content_bytes = if header_end < data.len() { 40 41 Some(data[header_end..].to_vec()) 41 42 } else { 42 43 None 43 44 }; 44 - let (status_string, meta_string) = if header.len() >= 2 { 45 - header.split_at(2) 45 + let (status_string, meta_string) = if header_trimmed.len() >= 2 { 46 + header_trimmed.split_at(2) 46 47 } else { 47 - (header.as_str(), "") 48 + (header_trimmed, "") 48 49 }; 49 50 let status_code = status_string.parse::<i32>().unwrap_or(0); 50 51