1use crate::CircularBuffer;
5use crate::FixedCircularBuffer;
6use core::fmt;
7use core::iter;
8use core::ops::Deref;
9
10#[cfg(feature = "alloc")]
11use crate::HeapCircularBuffer;
12
13#[derive(Default, Copy, Clone)]
14struct Placeholder;
15
16impl fmt::Debug for Placeholder {
17 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
18 f.write_str("_")
19 }
20}
21
22impl<T> fmt::Debug for CircularBuffer<T>
23where
24 T: fmt::Debug,
25{
26 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
27 let mut list = f.debug_list();
28 list.entries(self);
29 list.entries(iter::repeat_n(Placeholder, self.capacity() - self.len()));
30 list.finish()
31 }
32}
33
34impl<T, const N: usize> fmt::Debug for FixedCircularBuffer<T, N>
35where
36 T: fmt::Debug,
37{
38 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
39 self.deref().fmt(f)
40 }
41}
42
43#[cfg(feature = "alloc")]
44impl<T> fmt::Debug for HeapCircularBuffer<T>
45where
46 T: fmt::Debug,
47{
48 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
49 self.deref().fmt(f)
50 }
51}