smtp_codec/
utils.rs

1use std::borrow::Cow;
2
3pub(crate) fn escape_quoted(unescaped: &str) -> Cow<str> {
4    let mut escaped = Cow::Borrowed(unescaped);
5
6    if escaped.contains('\\') {
7        escaped = Cow::Owned(escaped.replace("\\", "\\\\"));
8    }
9
10    if escaped.contains('\"') {
11        escaped = Cow::Owned(escaped.replace("\"", "\\\""));
12    }
13
14    escaped
15}
16
17pub(crate) fn unescape_quoted(escaped: &str) -> Cow<str> {
18    let mut unescaped = Cow::Borrowed(escaped);
19
20    if unescaped.contains("\\\\") {
21        unescaped = Cow::Owned(unescaped.replace("\\\\", "\\"));
22    }
23
24    if unescaped.contains("\\\"") {
25        unescaped = Cow::Owned(unescaped.replace("\\\"", "\""));
26    }
27
28    unescaped
29}