ruterm

Форк
0
/
io.rs 
83 строки · 1.6 Кб
1
use crate::error::{
2
        Error,
3
        Result,
4
};
5
use std::io::{
6
        self,
7
        Read,
8
        Write,
9
};
10

11
/// Writes `content` to `output`.
12
///
13
/// # Usage
14
///
15
/// ```no_run
16
/// use ruterm::io::write_to;
17
/// use std::io;
18
///
19
/// let mut output = io::stdout();
20
/// write_to(&mut output, b"Hello").unwrap();
21
/// ```
22
pub fn write_to(output: &mut dyn Write, content: &[u8]) -> Result<usize>
23
{
24
        output.write(content).map_err(|_| Error("failed to write"))
25
}
26

27
/// Writes `content` to stdout. Same as `write_to`.
28
pub fn write(content: &[u8]) -> Result<usize>
29
{
30
        write_to(&mut io::stdout(), content)
31
}
32

33
/// Reads one byte from `input`.
34
///
35
/// # Usage
36
///
37
/// ```no_run
38
/// use ruterm::io::read_from;
39
/// use std::io;
40
///
41
/// let mut input = io::stdin();
42
/// if let Some(byte) = read_from(&mut input) {
43
///         println!("{byte}");
44
/// }
45
/// ```
46
pub fn read_from(input: &mut impl Read) -> Option<u8>
47
{
48
        let mut buffer: [u8; 1] = [0];
49
        if input.read_exact(&mut buffer).is_ok() {
50
                Some(buffer[0])
51
        }
52
        else {
53
                None
54
        }
55
}
56

57
/// Reads one byte from stdin. Same as `read_from`.
58
pub fn read() -> Option<u8>
59
{
60
        read_from(&mut io::stdin())
61
}
62

63
/// Flushes `output`.
64
///
65
/// # Usage
66
///
67
/// ```no_run
68
/// use ruterm::io::flush_to;
69
/// use std::io;
70
///
71
/// let mut output = io::stdout();
72
/// flush_to(&mut output).unwrap();
73
/// ```
74
pub fn flush_to(output: &mut dyn Write) -> Result<()>
75
{
76
        output.flush().map_err(|_| Error("failed to flush"))
77
}
78

79
/// Flushes stdout. Same as `flush_to`.
80
pub fn flush() -> Result<()>
81
{
82
        flush_to(&mut io::stdout())
83
}
84

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.