grass_runtime/
ioutils.rs

1use std::io::{Result, Write};
2
3#[inline(always)]
4pub(crate) fn write_number<W: Write>(mut fp: W, mut n: i32) -> Result<()> {
5    if n == 0 {
6        fp.write_all(b"0")
7    } else {
8        let mut buf = [0; 11];
9        let mut offset = 0;
10        let mut begin = 0;
11        let is_negative = if n < 0 {
12            n = -n;
13            true
14        } else {
15            false
16        };
17
18        while n > 0 {
19            buf[offset] = b'0' + (n % 10) as u8;
20            n /= 10;
21            offset += 1;
22        }
23        if is_negative {
24            buf[offset] = b'-';
25            offset += 1;
26        }
27        let mut end = offset - 1;
28        while begin < end {
29            buf.swap(begin, end);
30            begin += 1;
31            end -= 1;
32        }
33        fp.write_all(&buf[..offset])
34    }
35}