• [^] # Re: simple ?

    Posté par . En réponse au journal Rust en version 0.12. Évalué à 1.

    Je trouve que la solution de rust pour la surcharge des opérateur n'est pas si mal. Chaque opérateur a un Trait associé que tu dois implémenter pour ton type.

    Exemple :

    pub trait Add<RHS, Result> {
     fn add(&self, rhs: &RHS) -> Result;
    }

    L'inférence fonctionne la plupart du temps, et quand ce n'est pas le cas il suffit d'ajouter une petite annotation, comme

    3u + 4

    De plus, il y a toujours une vérification :

    let x = 3u;
    x + 3.0
    mismatched types: expected `uint`, found `<generic float #0>` (expected uint, found floating-point variable)
    

    Tu compares int_of_float avec ça ?

    tu es mauvaise langue, c'est exactement la même chose que int_of_float sauf que ça gère les cas ou la valeur n'est pas convertible. Je sais pas trop ce qu'ocaml fait dans ce cas, mais là la méthode
    .to_u8() renvoit juste une option.

    .expect(error) c'est une méthode qui dit 'Renvoit v si Som(v) ou failure "error" si none'