IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Rust Discussion :

référence dans une structure rust


Sujet :

Rust

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Quebec
    Inscrit en
    octobre 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations professionnelles :
    Activité : Quebec
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : octobre 2016
    Messages : 10
    Points : 26
    Points
    26
    Par défaut référence dans une structure rust
    Bonsoir;
    Je rencontre des erreurs dans mon apprentissage des structures qui contient des références en rust. Je ne comprends pas pourquoi rust refuse de compiler le code ci-dessous sachant que j'ai des valeurs de mêmes types et que les membres de ma structure ont tous une même durée de vie que le programme ? ; Serait-il autrement ?
    Merci d'avance pour votre aide

    Code rust : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    struct TabReference_color_test
    {
      value_box_green : &'static u8,
      value_box_yellow: &'static u8,
      value_box_black: &'static u8
    }
     
    fn main()
    {
      let color_yellow;
      {
        let newValue_yellow = 126 as u8;
        color_yellow = TabReference_test
        {
          addr_box_yellow: &newValue_yellow
        };
      }
     
      assert_eq!(*color_yellow.addr_box_yellow, 126);
      println!("reference ok");
    }
    Time doesn't make wise men, only old men...

  2. #2
    Expert confirmé
    Avatar de Pyramidev
    Homme Profil pro
    Développeur
    Inscrit en
    avril 2016
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : avril 2016
    Messages : 1 212
    Points : 5 151
    Points
    5 151
    Par défaut
    Bonjour,

    Il y a plusieurs problèmes qui empêchent de compiler ce code, dont des oublis de renommages. Après avoir réglé les premiers problèmes, tu devrais tomber sur une erreur de compilation en rapport avec les durées de vie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    error[E0597]: `newValue_yellow` does not live long enough
      --> src/main.rs:16:24
       |
    16 |       addr_box_yellow: &newValue_yellow,
       |                        ^^^^^^^^^^^^^^^^
       |                        |
       |                        borrowed value does not live long enough
       |                        requires that `newValue_yellow` is borrowed for `'static`
    ...
    20 |   }
       |   - `newValue_yellow` dropped here while still borrowed
    Une référence &'static ne peut pointer que vers un objet qui vit jusqu'à la fin du programme. Ta variable newValue_yellow, par contre, est locale, donc ne vit plus quand on sort du bloc dans lequel elle a été déclarée.

    Dans Rust By Example, voici deux pages avec des exemples de structures qui contiennent des références :


    EDIT 2020-07-11-15h59 : ajout de la 2e page.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Quebec
    Inscrit en
    octobre 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations professionnelles :
    Activité : Quebec
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : octobre 2016
    Messages : 10
    Points : 26
    Points
    26
    Par défaut
    Ok, dès qu'une de mes structures contient une référence, il faut spécifier une durée de vie, c'est bien ça ?
    Time doesn't make wise men, only old men...

  4. #4
    Expert confirmé
    Avatar de Pyramidev
    Homme Profil pro
    Développeur
    Inscrit en
    avril 2016
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : avril 2016
    Messages : 1 212
    Points : 5 151
    Points
    5 151
    Par défaut
    Citation Envoyé par Didier.va Voir le message
    Ok, dès qu'une de mes structures contient une référence, il faut spécifier une durée de vie, c'est bien ça ?
    Oui, c'est ça.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 21/12/2005, 16h44
  2. Réponses: 10
    Dernier message: 24/09/2005, 19h19
  3. Enlver un noeud dans une structure XML
    Par Sharingan dans le forum ASP
    Réponses: 4
    Dernier message: 20/12/2004, 08h08
  4. donée de plusieur vecteur dans une structure ??
    Par lipczynski dans le forum C++
    Réponses: 5
    Dernier message: 13/08/2004, 08h17
  5. type void* dans une structure
    Par barbapapaz dans le forum C
    Réponses: 3
    Dernier message: 16/07/2004, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo