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