• [^] # Re: type

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

    Non, cela n'est pas strictement équivalent.

    Tu aurais un cas ou tu définis message comme :
    class messageDef({
    address: int,
    type_: type,
    })

    class messageDefSpeed({
    adress: 0x04,
    type: float32,
    })

    classe messageSpeed({
    def: messageDefSpeed,
    data: def.type
    })

    Les 3 classes pourraient être dans 3 bibliothèques différentes. Une instance de messageSpeed serait le contenu d'un paquet circulant sur le réseau.

    La différence avec ton cas, est l'existence d'un "metatype" qui contraint ce que peut être messageDefSpeed qui est lié à la nature du lien (un message sur ARINC 429). Et chaque message est différent selon son adresse.

    C'est une manière de contraindre les données lors d'utilisation d'une lib. Peut-être que c'est faisable avec des types paramétriques, mais est-ce que cela resterait lisible ?

    Cela me fait aussi penser que j'aurais aimer parfois un moyen de déclarer les dépendances entre modules, et surtout les dépendances que je ne veux jamais. Le but est d'éviter un refactoring avec des inclusions sauvages qui transforment le code en plat de spaghetti.
    Par exemple, exiger qu'une classe utilitaire ne puisse jamais être dépendante de module "business". Cela serait une manière de contraindre la structure du programme.

    "La première sécurité est la liberté"