rpn_cli/
util.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
pub fn create_padding(element: char, required: usize, actual: usize, minimum: usize) -> String {
    let count = required.checked_sub(actual).unwrap_or_default().max(minimum);
    return std::iter::repeat(element).take(count).collect();
}

pub fn remove_char(string: &str, index: usize) -> String {
    let next = index + 1;
    return format!("{}{}", &string[..index], &string[next..]);
}

#[cfg(test)]
pub mod tests {
    use std::io;
    use std::io::Write;

    pub struct BufferWriter {
        pub buffer: String,
    }

    impl BufferWriter {
        pub fn new() -> BufferWriter {
            let buffer = String::new();
            return BufferWriter { buffer };
        }
    }

    impl Write for BufferWriter {
        fn write(&mut self, buffer: &[u8]) -> io::Result<usize> {
            unsafe { self.buffer.as_mut_vec().write(buffer) }
        }

        fn flush(&mut self) -> io::Result<()> {
            Ok(())
        }
    }
}