use std::fs::File; use std::io::{BufReader, BufRead}; fn main() -> std::io::Result<()> { let fantoir_path = std::env::args().nth(1).unwrap(); let file = match File::open(&fantoir_path) { Err(err) => panic!("Cannot read file {}: {}", fantoir_path, err), Ok(file) => file, }; let reader = BufReader::new(file); println!("full_insee;rivoli_with_key;libelle"); for line in reader.lines() { let l = line.unwrap(); if l.chars().nth(3) == Some(' ') { // Enregistrement Département } else if l.chars().nth(6) == Some(' ') { // Enregistrement Commune } else { let mut full_insee = String::from(l.get(0..2).unwrap()); full_insee.push_str(l.get(3..6).unwrap()); let rivoli_with_key = l.get(6..11).unwrap(); let street_type = street_type(l.get(11..15).unwrap()); let libelle = l.get(15..41).unwrap(); println!("{};{};{}{}", full_insee, rivoli_with_key, street_type, libelle); } }; Ok(()) } #[inline] fn street_type(street_type: &str) -> &str { match street_type { "ACH " => "ANCIEN CHEMIN ", "AER " => "AERODROME ", "AERG" => "AEROGARE ", "AGL " => "AGGLOMERATION ", "AIRE" => "AIRE ", "ALL " => "ALLEE ", "ANGL" => "ANGLE ", "ARC " => "ARCADE ", "ART " => "ANCIENNE ROUTE ", "AUT " => "AUTOROUTE ", "AV " => "AVENUE ", "BASE" => "BASE ", "BD " => "BOULEVARD ", "BER " => "BERGE ", "BORD" => "BORD ", "BRE " => "BARRIERE ", "BRG " => "BOURG ", "BRTL" => "BRETELLE ", "BSN " => "BASSIN ", "CAE " => "CARRIERA ", "CALL" => "CALLE, CALLADA ", "CAMI" => "CAMIN ", "CAMP" => "CAMP ", "CAN " => "CANAL ", "CAR " => "CARREFOUR ", "CARE" => "CARRIERE ", "CASR" => "CASERNE ", "CC " => "CHEMIN COMMUNAL ", "CD " => "CHEMIN DEPARTEMENTAL ", "CF " => "CHEMIN FORESTIER ", "CHA " => "CHASSE ", "CHE " => "CHEMIN ", "CHEM" => "CHEMINEMENT ", "CHL " => "CHALET ", "CHP " => "CHAMP ", "CHS " => "CHAUSSEE ", "CHT " => "CHATEAU ", "CHV " => "CHEMIN VICINAL ", "CITE" => "CITE ", "CIVE" => "COURSIVE ", "CLOS" => "CLOS ", "CLR " => "COULOIR ", "COIN" => "COIN ", "COL " => "COL ", "COR " => "CORNICHE ", "CORO" => "CORON ", "COTE" => "COTE ", "COUR" => "COUR ", "CPG " => "CAMPING ", "CR " => "CHEMIN RURAL ", "CRS " => "COURS ", "CRX " => "CROIX ", "CTR " => "CONTOUR ", "CTRE" => "CENTRE ", "DARS" => "DARSE, DARCE ", "DEVI" => "DEVIATION ", "DIG " => "DIGUE ", "DOM " => "DOMAINE ", "DRA " => "DRAILLE ", "DSC " => "DESCENTE ", "ECA " => "ECART ", "ECL " => "ECLUSE ", "EMBR" => "EMBRANCHEMENT ", "EMP " => "EMPLACEMENT ", "ENC " => "ENCLOS ", "ENV " => "ENCLAVE ", "ESC " => "ESCALIER ", "ESP " => "ESPLANADE ", "ESPA" => "ESPACE ", "ETNG" => "ETANG ", "FD " => "FOND ", "FG " => "FAUBOURG ", "FON " => "FONTAINE ", "FOR " => "FORET ", "FORT" => "FORT ", "FOS " => "FOSSE ", "FRM " => "FERME ", "GAL " => "GALERIE ", "GARE" => "GARE ", "GBD " => "GRAND BOULEVARD ", "GPL " => "GRANDE PLACE ", "GR " => "GRANDE RUE ", "GREV" => "GREVE ", "HAB " => "HABITATION ", "HAM " => "HAMEAU ", "HIP " => "HIPPODROME ", "HLE " => "HALLE ", "HLG " => "HALAGE ", "HLM " => "HLM ", "HTR " => "HAUTEUR ", "ILE " => "ILE ", "ILOT" => "ILOT ", "IMP " => "IMPASSE ", "JARD" => "JARDIN ", "JTE " => "JETEE ", "LAC " => "LAC ", "LEVE" => "LEVEE ", "LICE" => "LICES ", "LIGN" => "LIGNE ", "LOT " => "LOTISSEMENT ", "MAIL" => "MAIL ", "MAIS" => "MAISON ", "MAR " => "MARCHE ", "MARE" => "MARE ", "MAS " => "MAS ", "MNE " => "MORNE ", "MRN " => "MARINA ", "MTE " => "MONTEE ", "NTE " => "NOUVELLE ROUTE ", "PAE " => "PETITE AVENUE ", "PARC" => "PARC ", "PAS " => "PASSAGE ", "PASS" => "PASSE ", "PCH " => "PETIT CHEMIN ", "PCHE" => "PORCHE ", "PHAR" => "PHARE ", "PIST" => "PISTE ", "PKG " => "PARKING ", "PL " => "PLACE ", "PLA " => "PLACA ", "PLAG" => "PLAGE ", "PLAN" => "PLAN ", "PLCI" => "PLACIS ", "PLE " => "PASSERELLE ", "PLN " => "PLAINE ", "PLT " => "PLATEAU ", "PNT " => "POINTE ", "PONT" => "PONT ", "PORQ" => "PORTIQUE ", "PORT" => "PORT ", "POST" => "POSTE ", "POT " => "POTERNE ", "PROM" => "PROMENADE ", "PRT " => "PETITE, ROUTE ", "PRV " => "PARVIS ", "PTA " => "PETITE ALLEE ", "PTE " => "PORTE ", "PTR " => "PETITE RUE ", "PTTE" => "PLACETTE ", "QUA " => "QUARTIER ", "QUAI" => "QUAI ", "RAC " => "RACCOURCI ", "REM " => "REMPART ", "RES " => "RESIDENCE ", "RIVE" => "RIVE ", "RLE " => "RUELLE ", "ROC " => "ROCADE ", "RPE " => "RAMPE ", "RPT " => "ROND-POINT ", "RTD " => "ROTONDE ", "RTE " => "ROUTE ", "RUE " => "RUE ", "RUET" => "RUETTE ", "RUIS" => "RUISSEAU ", "RULT" => "RUELLETTE ", "RVE " => "RAVINE ", "SAS " => "SAS ", "SEN " => "SENTIER, SENTE ", "SQ " => "SQUARE ", "STDE" => "STADE ", "TER " => "TERRE ", "TOUR" => "TOUR ", "TPL " => "TERRE-PLEIN ", "TRA " => "TRAVERSE ", "TRAB" => "TRABOULE ", "TRN " => "TERRAIN ", "TRT " => "TERTRE ", "TSSE" => "TERRASSE ", "TUN " => "TUNNEL ", "VAL " => "VAL ", "VALL" => "VALLON, VALLEE ", "VC " => "VOIE COMMUNALE ", "VCHE" => "VIEUX CHEMIN ", "VEN " => "VENELLE ", "VGE " => "VILLAGE ", "VIA " => "VIA ", "VIAD" => "VIADUC ", "VIL " => "VILLE ", "VLA " => "VILLA ", "VOIE" => "VOIE ", "VOIR" => "VOIRIE ", "VOUT" => "VOUTE ", "VOY " => "VOYEUL ", "VTE " => "VIEILLE ROUTE ", "ZA " => "ZA ", "ZAC " => "ZAC ", "ZAD " => "ZAD ", "ZI " => "ZI ", "ZONE" => "ZONE ", "ZUP " => "ZUP ", _ => "" } }