Skip to content

Commit 5b546b3

Browse files
committed
cleanup logic somewhat
1 parent 9359daa commit 5b546b3

File tree

2 files changed

+25
-19
lines changed

2 files changed

+25
-19
lines changed

src/mime/parse.rs

+23-17
Original file line numberDiff line numberDiff line change
@@ -214,23 +214,15 @@ pub(crate) fn format(mime_type: &Mime, f: &mut fmt::Formatter<'_>) -> fmt::Resul
214214
if value.0.chars().all(is_http_token_code_point) && !value.0.is_empty() {
215215
write!(f, ";{}={}", name, value)?;
216216
} else {
217-
write!(
218-
f,
219-
";{}=\"{}\"",
220-
name,
221-
value
222-
.0
223-
.chars()
224-
.flat_map(|c| match c {
225-
'"' | '\\' => EscapeMimeValue {
226-
state: EscapeMimeValueState::Backslash(c)
227-
},
228-
c => EscapeMimeValue {
229-
state: EscapeMimeValueState::Char(c)
230-
},
231-
})
232-
.collect::<String>()
233-
)?;
217+
let value = value
218+
.0
219+
.chars()
220+
.flat_map(|c| match c {
221+
'"' | '\\' => EscapeMimeValue::backslash(c),
222+
c => EscapeMimeValue::char(c),
223+
})
224+
.collect::<String>();
225+
write!(f, ";{}=\"{}\"", name, value)?;
234226
}
235227
}
236228
Ok(())
@@ -240,6 +232,20 @@ struct EscapeMimeValue {
240232
state: EscapeMimeValueState,
241233
}
242234

235+
impl EscapeMimeValue {
236+
fn backslash(c: char) -> Self {
237+
EscapeMimeValue {
238+
state: EscapeMimeValueState::Backslash(c),
239+
}
240+
}
241+
242+
fn char(c: char) -> Self {
243+
EscapeMimeValue {
244+
state: EscapeMimeValueState::Char(c),
245+
}
246+
}
247+
}
248+
243249
#[derive(Clone, Debug)]
244250
enum EscapeMimeValueState {
245251
Done,

tests/mime.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
// #[cfg(features = "fs")]
1+
#[cfg(features = "fs")]
22
mod tests {
33
use async_std::fs;
44
use async_std::io;
5-
use http_types::{mime, Body, Request, Response};
5+
use http_types::{mime, Body, Response};
66

77
#[async_std::test]
88
async fn guess_plain_text_mime() -> io::Result<()> {

0 commit comments

Comments
 (0)