anstyle/
reset.rs

1/// Reset terminal formatting
2#[allow(clippy::exhaustive_structs)]
3#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
4pub struct Reset;
5
6impl Reset {
7    /// Render the ANSI code
8    ///
9    /// `Reset` also implements `Display` directly, so calling this method is optional.
10    #[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}