12pub fn deent(input: &str) -> String {3 if input.is_empty() {4 return "".to_owned();5 }6 let min_ident = input7 .split('\n')8 .filter(|s| !s.is_empty())9 .map(|ss| ss.chars().take_while(|c| *c == ' ').count())10 .min()11 .unwrap();12 input13 .split('\n')14 .map(|s| s.chars().skip(min_ident).collect::<String>())15 .collect::<Vec<String>>()16 .join("\n")17}1819#[cfg(test)]20pub mod tests {21 use super::*;22 #[test]23 fn deent_tests() {24 assert_eq!(deent(" aaa"), "aaa");25 assert_eq!(deent(" aaa\n bbb"), " aaa\nbbb");26 assert_eq!(deent(" aaa\n bbb"), "aaa\n bbb");27 assert_eq!(deent(" aaa\n\n bbb"), "aaa\n\n bbb");28 }29}