1#[allow(clippy::exhaustive_structs)]
3#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
4pub struct Reset;
5
6impl Reset {
7 #[inline]
11 pub fn render(self) -> impl core::fmt::Display + Copy {
12 self
13 }
14}
15
16impl core::fmt::Display for Reset {
17 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
18 f.write_str(RESET)
19 }
20}
21
22pub(crate) const RESET: &str = "\x1B[0m";
23
24#[cfg(test)]
25#[cfg(feature = "std")]
26mod test {
27 use super::*;
28
29 #[test]
30 fn print_size_of() {
31 use std::mem::size_of;
32 dbg!(size_of::<Reset>());
33 }
34
35 #[test]
36 fn no_align() {
37 #[track_caller]
38 fn assert_no_align(d: impl core::fmt::Display) {
39 let expected = format!("{d}");
40 let actual = format!("{d:<10}");
41 assert_eq!(expected, actual);
42 }
43
44 assert_no_align(Reset);
45 assert_no_align(Reset.render());
46 }
47}