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(())
}
}
}