| /// Converts an arbitrary sequence of bytes to a literal suitable for building |
| /// a regular expression. |
| pub fn bytes_to_regex(bs: &[u8]) -> String { |
| use regex_syntax::is_meta_character; |
| use std::fmt::Write; |
| |
| let mut s = String::with_capacity(bs.len()); |
| for &b in bs { |
| if b <= 0x7F && !is_meta_character(b as char) { |
| write!(s, r"{}", b as char).unwrap(); |
| } else { |
| write!(s, r"\x{:02x}", b).unwrap(); |
| } |
| } |
| s |
| } |
| |
| /// Converts arbitrary bytes to a nice string. |
| pub fn show_bytes(bs: &[u8]) -> String { |
| use std::ascii::escape_default; |
| use std::str; |
| |
| let mut nice = String::new(); |
| for &b in bs { |
| let part: Vec<u8> = escape_default(b).collect(); |
| nice.push_str(str::from_utf8(&part).unwrap()); |
| } |
| nice |
| } |