Loading s5obj_rust_labo_rappels...
Hello, world!
struct MyStruct;
trait MyTrait {}
const MY_CONSTANT: usize = 512;
fn my_function(my_param: &MySruct) { let my_variable = my_param.field(); }
#[derive(Debug, Clone, Copy)]
pub fn new(year: u16, temperature: f32, rainfall: f32) -> Self
mod weather_station;
Measurement { year: 2022, temperature: 13.6, rainfall : 991.0 } Measurement { year: 2023, temperature: 14.1, rainfall : 1200.0 } Measurement { year: 2024, temperature: 14.3, rainfall : 708, 5 }
pub fn new(name: &str) -> Self
WeatherStation {
name: "Brest",
measurements: [],
}
pub fn add_measurement(&mut self, measurement: Measurement)
let mut station = WeatherStation::new("Brest");
station.add_measurement(Measurement { year: 2022, temperature: 13.6, rainfall : 991.0 }); station.add_measurement(Measurement { year: 2023, temperature: 14.1, rainfall : 1200.0 }); station.add_measurement(Measurement { year: 2024, temperature: 14.3, rainfall : 708, 5 });
WeatherStation {
name: "Brest",
measurements: [
Measurement { year: 2022, temperature: 13.6, rainfall : 991.0 },
Measurement { year: 2023, temperature: 14.1, rainfall : 1200.0 },
Measurement { year: 2024, temperature: 14.3, rainfall : 708, 5 },
],
}
pub fn name(&self) -> &str
pub fn count(&self) -> usize
pub fn is_empty(&self) -> bool
Station : Brest Nombre de mesures : 4 Station vide : false
pub fn measurements(&self) -> &[Measurement]
let measurements = station.measurements(); println!("Number of measurements: {}", measurements.len());
year;temperature;rainfall 1950;11.8;991.9 1951;11.6;1116.6 1952;11.6;895.5 ...
pub fn load(path: &str) -> Result<Self, Box<dyn Error>>
use std::fs;
let content = fs::read_to_string("data/brest.csv")?;
// Lit l'intégralité du fichier dans une chaîne de caractères. // L'opérateur ? propage automatiquement une éventuelle erreur.
let mut lines = content.lines(); // Crée un itérateur permettant de parcourir les lignes du fichier.
lines.next(); // Passe à la ligne suivante. // Ici, on ignore la ligne d'en-tête du fichier CSV.
for line in lines { println!("{}", line); } // La variable line contient successivement chaque ligne du fichier.
let mut fields = line.split(';'); // Découpe la ligne selon le caractère ';'. // fields est un itérateur sur les différentes colonnes.
let year = fields.next().unwrap(); // Récupère la colonne suivante. // Ici, year est une chaîne de caractères (&str).
let year = year.parse::<u16>()?; // Convertit la chaîne de caractères en entier. // Si la conversion échoue, l'erreur est propagée grâce à ?.
let station = WeatherStation::load("data/brest.csv")?;
pub fn average_temperature(measurements: &[Measurement]) -> Option<f32>
Average temperature : 12.8 °C
measurements .iter() .map(|m| m.temperature) .sum::<f32>()
pub fn average_rainfall(measurements: &[Measurement]) -> Option<f32>
pub fn hottest_measurement( measurements: &[Measurement] ) -> Option<&Measurement>
Hottest year : 2022 (14.6 °C)
year;temperature;rainfall 1950;11.8;991.9 1951;11.6;1116.6 1952;11.6;895.5 ...
let station = WeatherStation::load("data/brest.csv")?;