termion/sys/unix/
mod.rs

1extern crate libc;
2
3use std::io;
4
5pub use self::libc::termios as Termios;
6
7pub mod attr;
8pub mod size;
9pub mod tty;
10
11// Support functions for converting libc return values to io errors {
12trait IsMinusOne {
13    fn is_minus_one(&self) -> bool;
14}
15
16macro_rules! impl_is_minus_one {
17        ($($t:ident)*) => ($(impl IsMinusOne for $t {
18            fn is_minus_one(&self) -> bool {
19                *self == -1
20            }
21        })*)
22    }
23
24impl_is_minus_one! { i8 i16 i32 i64 isize }
25
26fn cvt<T: IsMinusOne>(t: T) -> io::Result<T> {
27    if t.is_minus_one() {
28        Err(io::Error::last_os_error())
29    } else {
30        Ok(t)
31    }
32}
33// } End of support functions