use tracing::debug; use super::error::{Chapter1Error::Problem1Error, Chapter1Result}; /// Check Permutation: Given two strings, write a method to decide if one is a permutation of the other pub fn is_permutation(string: &str, string2: &str) -> Chapter1Result<()> { let string = String::from(string); let mut string2 = String::from(string2); for char1 in string.chars() { debug!("char 1: {char1}"); eliminate(char1, &mut string2)? } Ok(()) } fn eliminate(char1: char, string2: &mut String) -> Chapter1Result<()> { for (idx, char2) in string2.chars().enumerate() { debug!("char 2: {char2}"); if char1 == char2 { debug!("match remove"); string2.remove(idx); return Ok(()); } } Err(Problem1Error) } #[cfg(test)] mod test_problem_1 { use super::*; use tracing_test::traced_test; #[traced_test] #[test] fn test_guh() { assert!(is_permutation("guh", "hug").is_ok()); } #[test] fn test_whale() { assert!(is_permutation("whale", "lewah").is_ok()); } #[test] fn test_zeb() { assert!(is_permutation("zeb", "bera").is_err()); } #[test] fn test_bez() { assert!(is_permutation("szeb", "bez").is_err()); } }