Err(PasswordError::Empty)=>eprintln!("Error: password is empty")
}
}
```
## 3. More use of standard library and error handling
### 3.1. Reading file and parsing strings
On reprend la logique des exercices précédents pour récupérer le mot de passe mais cette fois pour adresses du fichier `ips.txt` qu'on ajoute à une liste
```rs
/// Reads a file that contains an address per line and returns a vector with all well-formed
/// addresses while printing a warning on standard error for every malformed line.
Err(PasswordError::Empty)=>eprintln!("Error: password is empty")
}
}
```
## 3. More use of standard library and error handling
### 3.1. Reading file and parsing strings
On reprend la logique des exercices précédents pour récupérer le mot de passe mais cette fois pour adresses du fichier `ips.txt` qu'on ajoute à une liste
```rs
/// Reads a file that contains an address per line and returns a vector with all well-formed
/// addresses while printing a warning on standard error for every malformed line.