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 :

Erreur Slice et range


Sujet :

Rust

  1. #1
    Membre à l'essai
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Janvier 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 19
    Points : 19
    Points
    19
    Par défaut Erreur Slice et range
    Bonjour

    Je me retrouve confronter à un petit problème de corrélation de type mais je ne l'ai que lorsque ma boucle for utilise un range [0..vec.len()] plutôt que [0,1,2,3,4]
    Je vous met mon bout de programme.

    Code : 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    use std::path::Path;
    use std::fs::{File,metadata};
    use std::io::{prelude::*,BufReader,BufRead,stdin};
    use std::net::Ipv4Addr;
    use std::str::FromStr;
     
    fn main() {
     
        let mut entree = String::new();     /*variable entree clavier*/
        let mut lenadresseip = 0;       /*variable taille du fichier*/
        let mut vecip = Vec::new();     /*variable adresse ip */
     
     
        //verification de l'existence du fichier adresse_ip.txt
        let b = Path::new("adresse_ip.txt").is_file();
     
     
        //si le fichier existe on regarde sa taille 
        if b {
            //utilisation des metadata pour avoir la taille du fichier afin de savoir s'il contient une adresse
            let datameta = metadata("adresse_ip.txt").expect("oups, failled");
            lenadresseip = datameta.len();
            }
     
        // soit le fichier n'existe pas soit il est vide et on en cree un
        if !b || lenadresseip == 0 { let mut adresse_ip = File::create("adresse_ip.txt").expect("nop, not work");
                println!("Wich IP address ?");
                let mut _entree = String::new();
                stdin().read_line(&mut entree).expect("I can't read the entry");
                write!(adresse_ip,"{}",entree).expect("sorry dude!");
              }
     
        //lecture des adresses ip dans le fichier
        let reader = BufReader::new(File::open("adresse_ip.txt").expect("I can't do this"));
        for line in reader.lines() {
            for ip in  line.unwrap().split_whitespace() {
                //remplissage d'un vecteur contenant les adresses Ip du fichier texte
                vecip.push(String::from(ip));
            }
        }
        //petit souci avec l'utilisation du range [0..vecip.len()] par contre avec [1,2,3,4] pas de soucis
        for number in [0..vecip.len()]{
            let ip_import = Ipv4Addr::from_str(&vecip[number]).expect("no thank's you Margaret");
            println!("adresse: {}",ip_import);
        }
     
    }
    Je vous remercie pour votre aide

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 617
    Points : 56 722
    Points
    56 722
    Billets dans le blog
    40
    Par défaut
    Bonsoir,

    Citation Envoyé par maoppi Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       //petit souci avec l'utilisation du range [0..vecip.len()] par contre avec [1,2,3,4] pas de soucis
        for number in [0..vecip.len()]{
            ...
        }
     
    }
    Enlève les crochets pour l'expression range :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        for number in 0..vecip.len() {
            ...
        }
    voir Range expressions

  3. #3
    Membre à l'essai
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Janvier 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 19
    Points : 19
    Points
    19
    Par défaut Effectivement
    Ah oui effectivement

    Merci beaucoup

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

Discussions similaires

  1. Erreur 1004 avec Range().Locked
    Par alain8225 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/09/2010, 21h21
  2. Erreur 1004 sur Range(cells,cells).copy
    Par Sebastien57 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/10/2009, 11h33
  3. [XL-2000] erreur sur un range
    Par zandru dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 22/09/2009, 15h10
  4. erreur La méthode 'Range' de l'objet '_Global' a échoué
    Par mahboub dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/11/2006, 20h46
  5. Réponses: 16
    Dernier message: 12/01/2006, 16h14

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