IsTerminal in std::io - Rust
Description: Trait to determine if a descriptor/handle refers to a terminal/tty.

## IsTerminal

# Trait IsTerminal

1.70.0 · Source

    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 · Source

#### 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/executable` it will print: `Hello foo`.
- If you instead run the example interactively by running `path/to/executable` directly, it will prompt for input.

## Implementors§

1.70.0 · Source§

### impl IsTerminal for File

1.70.0 · Source§

### impl IsTerminal for BorrowedFd<'_>

Available on Unix or HermitCore or `target_os=trusty` or WASI or `target_os=motor` only.
1.70.0 · Source§

### impl IsTerminal for OwnedFd

Available on Unix or HermitCore or `target_os=trusty` or WASI or `target_os=motor` only.
1.70.0 · Source§

### impl IsTerminal for Stderr

1.70.0 · Source§

### impl IsTerminal for StderrLock<'_>

1.70.0 · Source§

### impl IsTerminal for Stdin

1.70.0 · Source§

### impl IsTerminal for StdinLock<'_>

1.70.0 · Source§

### impl IsTerminal for Stdout

1.70.0 · Source§

### impl IsTerminal for StdoutLock<'_>