Damn. You just made me realize that as a crate author we can have ASCII art in the Debug impl, and that as a stdlib we could have a trait to standardize that behaviour.
i mean, i just stuck it in the Display impl; i didnβt want to put it in Debug, because i feel like the expectation for Debug is that itβs single-line if alt-mode isnβt set, or respects indentation if alt-mode is setβ¦which this doesnβt do super nicely
it would be very cool if there was some kind of standardized trait for pretty-printing ascii graphics, *especially* if there was some way to slice up an ascii graphic with newlines so it can be, like, printed next to a different multi-line ascii graphicβ¦but thatβs suddenly a lot
maybe worth starting with some kind of FmtAsciiArt trait in a crate that could make it into std eventually if itβs possible to come up with a good abstraction over it, idk
(it *does* get indented correctly if you put my Display impl in a fmt::DebugStruct field or similar with alt-mode enabledβ¦but the formatter puts a trailing comma after it, which looks weird with the ascii artβ¦)
std wouldnβt even need to implement the actual color codes and stuff, that could be left to third-party crates, if Formatter just had a way to say βiβm definitely writing to something that is a ttyβ
Maybe we should have a cli!() macro?
The thing that would be interesting is having an HTML style datatype for output and delay the formatting to right before it gets printed.
The pretty crate supplies a similar βwhatever you wantβ style of annotation support as well: https://github.com/Marwes/pretty.rsβ¦ - which allows you to add on colours if you want it at some level - integration with the fmt is difficult though (term width is also an issue).
Finding the right level of abstraction for the separation might be tricky⦠eg. it would also be neat if at some level you could present stuff in an accessible, non-ascii-art way, and in the process also support non-ascii consumers.