pub trait PadToWidth {
fn pad_to_width(&self, width: usize, pad_char: char) -> String;
}
impl PadToWidth for String {
fn pad_to_width(&self, width: usize, pad_char: char) -> String {
let mut string = self.clone();
while string.len() < width {
string.insert(0, pad_char);
}
string
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_pad_to_width() {
let string = String::from("Hello");
assert_eq!(string.pad_to_width(10, '-'), "-----Hello");
let string = String::from("World");
assert_eq!(string.pad_to_width(5, '*'), "World");
let string = String::from("Rust");
assert_eq!(string.pad_to_width(7, '#'), "###Rust");
let string = String::from("Programming");
assert_eq!(string.pad_to_width(15, '+'), "++++Programming");
}
}