Solution verif code CB en rust

Problème d'origine.

Je choisis d'utiliser un module avec tests :

// src/lib.rs

pub fn is_valid(s: &str) -> bool{
    let mut colonne = 0;
    let mut total = 0;

    for car in s.chars() {
        let digit:u32 = match car.to_digit(10) {
            Some(nombre) => nombre,
            None => continue,
        };
        if colonne%2 == 0 {
            total += double_digit(digit);
        } else {
            total += digit;
        }
        colonne += 1;
    }
    if colonne != 16 {
        return false
    }
    if total%10 == 0 {
        true
    } else {
        false
    }
}

fn double_digit(d:u32) -> u32 {
    /*  calcule 2d et retire 9 si 2d >= 10
    */
    let dd = 2*d;
    if dd > 9 {dd - 9} else {dd}
}

#[cfg(test)]
mod tests {
    #[test]
    fn double_digit_test_inf() {
        assert_eq!(crate::double_digit(0), 0);
        assert_eq!(crate::double_digit(1), 2);
        assert_eq!(crate::double_digit(2), 4);
        assert_eq!(crate::double_digit(3), 6);
        assert_eq!(crate::double_digit(4), 8);
    }

    #[test]
    fn double_digit_test_sup() {
        assert_eq!(crate::double_digit(5), 1);
        assert_eq!(crate::double_digit(6), 3);
        assert_eq!(crate::double_digit(7), 5);
        assert_eq!(crate::double_digit(8), 7);
        assert_eq!(crate::double_digit(9), 9);
    }

    #[test]
    fn test_valid() {
        let code = "4556 7375 8689 9855";
        assert!(crate::is_valid(&code));
    }

    #[test]
    fn test_invalid() {
        let code = "4024 0071 0902 2143";
        assert!(! crate::is_valid(&code));
    }

}

Et le principal

// src/main.rs

use std::env;
use cb::is_valid;
 
 
fn main() {
    let args: Vec<String> = env::args().collect();
    if args.len() != 2 {
        println!("Entrez le code cb à tester dans la ligne de commande.");
        println!("Par exemple {} 4556-7375-8689-9855", &args[0]);
        return;
    }
    if is_valid(&args[1]) {
        println!("{} est valide.", &args[1]);
    } else {
        println!("{} est invalide.", &args[1]);
    }
}