Cows. Cows everywhere. - #135
Open
shanecelis wants to merge 11 commits into
Open
Conversation
kpcyrd
reviewed
Jun 26, 2023
Comment on lines
+106
to
+112
| #[allow(unused_mut)] | ||
| #[allow(unused_assignments)] | ||
| let mut tty = false; | ||
| #[cfg(feature = "tty")] | ||
| { | ||
| tty = atty::is(atty::Stream::Stdout); | ||
| } |
There was a problem hiding this comment.
Suggested change
| #[allow(unused_mut)] | |
| #[allow(unused_assignments)] | |
| let mut tty = false; | |
| #[cfg(feature = "tty")] | |
| { | |
| tty = atty::is(atty::Stream::Stdout); | |
| } | |
| let tty = if cfg!(feature = "tty") { | |
| atty::is(atty::Stream::Stdout) | |
| } else { | |
| false | |
| }; |
Author
There was a problem hiding this comment.
Good idea. I like this better than mine but it doesn't compile. This compiles:
let tty = if cfg!(feature = "tty") {
#[cfg(feature = "tty")]
{
atty::is(atty::Stream::Stdout)
}
#[cfg(not(feature = "tty"))]
false
} else {
false
};
But we can clean it up further to this:
let tty = {
#[cfg(feature = "tty")]
{
atty::is(atty::Stream::Stdout)
}
#[cfg(not(feature = "tty"))]
false
};
And sorry there are some commits that I didn't mean to put into this PR.
There was a problem hiding this comment.
You could also use
use std::io::{self, IsTerminal};
let tty = io::stdout().is_terminal();that was very recently introduced in the Rust 1.70.0 std library.
Author
There was a problem hiding this comment.
Could use that and drop the atty dependency.
Great project. I saw an opportunity to alloc less. This PR changes
inputfrom aStringto aCow<'a, str>and the implementation for&'a strtoInto<Cow<'a, str>>which will cover&stras before andStringandCows and makes the necessary changes to support that. No usage change for the end user, just broader support and less allocs.As an aside, I added print statements to the dynamic_colors example.