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

时间:2016-02-08 07:55:42

标签: rust cyrillic

使用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!以调试格式正确打印?

1 个答案:

答案 0 :(得分:7)

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

我不相信你可以做些什么来改变字符串一般;根据具体情况,您可以改为使用Display,或者在&str周围创建一个转发到Display而不是Debug的包装。