u8字节有没有像char::escape_default这样的函数?

Is there a function like char::escape_default for u8 bytes?

Rust 标准库有一个 char::escape_default 函数,如果它是可打印的,它将打印文字字符,如果不是,则打印一个合理的转义序列(\n\u{XXXX} 等) .

字节是否有等效项?具体来说,如果它是可打印的,我希望它是 return 文字字节,如果不是,我希望它是 return 一个 byte 转义序列(\xNN)。

标准库有一个 std::ascii::escape_default 函数可以满足这个用例:

fn main() {
    let x = String::from_utf8(
        "The compiler said “you have an error!”."
            .bytes()
            .flat_map(|b| std::ascii::escape_default(b))
            .collect::<Vec<u8>>(),
    )
    .unwrap();
    println!("{}", x);
}