使用调试格式时如何编写西里尔文本?

How to write Cyrillic text when using the debugging format?

使用 println! 时按预期工作:

println!("Привет!"); // Привет!

但是使用调试格式:

println!("{:?}", "Привет!"); // "\u{41f}\u{440}\u{438}\u{432}\u{435}\u{442}!"

使用assert!

assert!("Привет!" != "Привет!") // 'assertion failed: "\u{41f}\u{440}\u{438}\u{432}\u{435}\u{442}!" != "\u{41f}\u{440}\u{438}\u{432}\u{435}\u{442}!"

有什么方法可以让 assert! 以调试格式正确打印?

就 Rust 而言, 是正确的。 strDebug 的实现将自身限制为可打印的 ASCII 字符,以便无论代码页或输出机制如何,输出都是可读的。

我不相信你可以做任何事情来改变字符串一般;根据具体情况,您可以改用 Display,或者围绕 &str 创建一个包装器,转发到 Display 而不是 Debug