• [^] # Re: type

    Posté par (site web personnel) . En réponse au journal [Letlang] Écrire un compilateur en Rust (partie 3). Évalué à 2.

    Tu aurais un exemple à donner ?

    Parce qu'il restera possible de définir un type comme ceci :

    class config(json_data: {
     debug: bool,
     loglevel: "debug" | "info" | "warn" | "error" | "critical",
     logformat: string,
    })
    

    Et ensuite de l'utiliser dans une fonction :

    # lèvera une exception au runtime si la conf est pas bonne
    let cfg: config = json.loadfile("/path/to/config.json")
    

    Ce qu'il faut bien comprendre, c'est la syntaxe :

    Keyword("class") Identifier LeftParen Identifier : TypeDef RightParen [LeftBracket TypeConstraintBlock RightBracket]
    

    En gros, tout ce qui est après le : dans les ( ) c'est une définition de type. En d'autres mots, toutes les expressions suivantes sont des types :

    • int
    • int | bool & !42
    • (:ok, int)
    • { debug: bool }

    https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg