#![forbid(unsafe_code)]
pub fn escape_ascii(input: &[u8]) -> String {
let mut result = String::new();
for byte in input {
for ascii_byte in core::ascii::escape_default(*byte) {
result.push_str(core::str::from_utf8(&[ascii_byte]).unwrap());
}
}
result
}
#[cfg(test)]
#[test]
fn test_escape_ascii() {
assert_eq!("", escape_ascii(b""));
assert_eq!("abc", escape_ascii(b"abc"));
assert_eq!("\\r\\n", escape_ascii(b"\r\n"));
assert_eq!(
"\\xe2\\x82\\xac",
escape_ascii( "\u{20AC}".as_bytes())
);
assert_eq!("\\x01", escape_ascii(b"\x01"));
}