Défi
Énoncé
Écrire une fonction lire_et_elever_au_carre() -> Result<i64, String> qui : lit une ligne sur stdin avec stdin().read_line(), supprime le saut de ligne avec trim(), parse la chaîne en i32 avec parse::<i32>() en convertissant l'erreur en String via .map_err(|e| e.to_string()), puis retourne le carré de la valeur sous forme de i64. Toutes les opérations utilisent ? pour propager les erreurs. Dans main, appeler la fonction et afficher le résultat ou l'erreur sur stderr.
Contraintes
- Compilé avec
rustc --edition=2021 main.rs. maindoit avoir la signaturefn main()(pas-> Result).- Les erreurs sont affichées sur
stderrviaeprintln!. - Pas de
unwrap()ni deexpect()dans le code final. - Seule
std::ioest utilisée pour la lecture.
Exemple
Entrée valide :
12
Sortie sur stdout :
Carré : 144
Entrée invalide :
abc
Sortie sur stderr :
Erreur : invalid digit found in string