pub fn reverse(number: i32) -> i32 { number // Convert to an absolute number without wrapping or panicking. .unsigned_abs() // Convert the number to string, then reverse all its characters. .to_string() .chars() .rev() // Collect the reversed characters back into a string. .collect::() // Parse the string into an i32. .parse() // If it returns an Err then use 0 instead. .unwrap_or(0) // Then multiply by 0, 1 or -1 depending on the sign of the original number. * number.signum() }