Défi
Énoncé
Écrire une fonction lire_et_elever_au_carre() -> Result<i64, String> qui : lit une ligne sur stdin, supprime le saut de ligne, parse la chaîne en i32, puis retourne le carré de la valeur sous forme de i64. Toutes les opérations faillibles propagent leur erreur avec ?. 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. - Deux opérations peuvent échouer et leurs types d'erreur diffèrent :
read_linerenvoie unstd::io::Error,parseunParseIntError. Aucun des deux ne se convertit tout seul enString— chacun doit être converti avant que?puisse le propager, sans quoi le code ne compile pas. - 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