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