// lib.rs pub mod file_to_ascii { use std::u8; use std::env; use std::fs; use std::fs::File; use std::io::Read; use std::fs::Metadata; pub struct Config { pub filename1: String, pub filename2: String, } impl Config { pub fn new(args: &[String]) -> Config { if args.len() < 3 { panic!("pas assez d'arguments"); } let filename1 = args[1].clone(); let filename2 = args[2].clone(); Config { filename1, filename2 } } } fn get_file_names() { let args: Vec = env::args().collect(); let config = Config::new(&args); println!("Alignement de {} avec {} \n", config.filename1, config.filename2); let the_metadata1 = fs::metadata(&config.filename1).expect("illisible"); let the_metadata2 = fs::metadata(&config.filename2).expect("illisible"); println!("Nom du fichier 1 : {} Longueur : {} \n", &config.filename1, the_metadata1.len()); println!("Nom du fichier 2 : {} Longueur : {} \n", &config.filename2, the_metadata2.len()); let seq1 = fasta_read_seq(&config.filename1, the_metadata1); let seq2 = fasta_read_seq(&config.filename2, the_metadata2); println!("Séquence 1 : {:?} \n", &seq1); println!("Séquence 2 : {:?} \n", &seq2); } fn fasta_read_seq(filename: &String, the_metadata: Metadata) -> Vec { let mut f = File::open(&filename).expect("pas de fichier"); let mut line = vec![0; the_metadata.len() as usize]; f.read(&mut line).expect("débordement de buffer"); line } pub fn debut() { get_file_names(); } }