pub trait IsTerminal: Sealed {
// Required method
fn is_terminal(&self) -> bool;
}Expand description
Trait to determine if a descriptor/handle refers to a terminal/tty.
Required Methods§
1.70.0 · Sourcefn is_terminal(&self) -> bool
fn is_terminal(&self) -> bool
Returns true if the descriptor/handle refers to a terminal/tty.
On platforms where Rust does not know how to detect a terminal yet, this will return
false. This will also return false if an unexpected error occurred, such as from
passing an invalid file descriptor.
§Platform-specific behavior
On Windows, in addition to detecting consoles, this currently uses some heuristics to
detect older msys/cygwin/mingw pseudo-terminals based on device name: devices with names
starting with msys- or cygwin- and ending in -pty will be considered terminals.
Note that this may change in the future.
§Examples
An example of a type for which IsTerminal is implemented is Stdin:
use std::io::{self, IsTerminal, Write};
fn main() -> io::Result<()> {
let stdin = io::stdin();
// Indicate that the user is prompted for input, if this is a terminal.
if stdin.is_terminal() {
print!("> ");
io::stdout().flush()?;
}
let mut name = String::new();
let _ = stdin.read_line(&mut name)?;
println!("Hello {}", name.trim_end());
Ok(())
}The example can be run in two ways:
- If you run this example by piping some text to it, e.g.
echo "foo" | path/to/executableit will print:Hello foo. - If you instead run the example interactively by running
path/to/executabledirectly, it will prompt for input.
Implementors§
impl IsTerminal for File
impl IsTerminal for BorrowedFd<'_>
Available on Unix or Hermit or Trusty or WASI or Motor OS only.
impl IsTerminal for OwnedFd
Available on Unix or Hermit or Trusty or WASI or Motor OS only.
impl IsTerminal for BorrowedHandle<'_>
Available on Windows only.
impl IsTerminal for OwnedHandle
Available on Windows only.