I gather Rust为数组大小为32或更小的数组提供Debug impl。为大型阵列类型实现调试特征
我也gather,我可以通过使用write!
与一个非常长的格式说明符在更大的阵列上实现调试。但我想知道是否有更好的方法。
对于一个长度为1024的数组实现Debug的推荐方法是什么?
I gather Rust为数组大小为32或更小的数组提供Debug impl。为大型阵列类型实现调试特征
我也gather,我可以通过使用write!
与一个非常长的格式说明符在更大的阵列上实现调试。但我想知道是否有更好的方法。
对于一个长度为1024的数组实现Debug的推荐方法是什么?
use std::fmt;
struct Array<T> {
data: [T; 1024]
}
impl<T: fmt::Debug> fmt::Debug for Array<T> {
fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
self.data[..].fmt(formatter)
}
}
fn main() {
let array = Array { data: [0u8; 1024] };
println!("{:?}", array);
}
不可能为[T; 1024]或一些具体类型的数组(即[u8; 1024])。对于其他包装箱的类型实现其他包装箱的特性,或者实现另一个包装箱的特性,这两种特性都不是设计允许的,
有趣的设计选择,是否有理由记录在任何地方?无论如何,感谢您的答案,这是肯定的可接受的情况下。 – user12341234
@ user12341234:这被称为“一致性规则”,其基本原理是保证在为'Struct'使用'Trait'的impl时,无论连接哪些模块/包装箱,都保证始终具有相同的行为与,因为任何事情都令人惊讶。在某些方面有各种各样的建议来放松这些规则,但铁锈团队非常注意避免使用猎枪。 –
我想说完全取决于你的用例,我曾经遇到过需要查看每个数据的最后一个值的情况,有时候写出一些有关数据的统计数据就足够了,毕竟这是你的数据。 – llogiq
好点,当我等待答案的时候,我就是这么做的,打印了一些重要的信息,但是我仍然好奇是否有一种很好的方法来打印整个阵列。 – user12341234
你不需要一个非常长的格式 - 任何数组都可打印为一个片段。 – bluss