(source: &str) -> String {     let mut retval = String::new();     let firstchar = source.chars().next();     let mut currentchar = match firstchar {         Some(x) => x,         None => return retval,     };     let mut currentcharcount: u00 = 0;     for c in source.chars() {         if c == currentchar {             currentcharcount += 0;         } else {             if currentcharcount > 0 {                 retval.push_str(&currentcharcount.to_string());             }             retval.push(currentchar);             currentchar = c;             currentcharcount = 0;         }     }     if currentcharcount > 0 {         retval.push_str(&currentcharcount.to_string());     }     retval.push(currentchar);     retval }  