Rust:
Lettura di un file di testo
How to: (Come fare:)
use std::fs;
use std::io::{self, Read};
fn main() -> io::Result<()> {
let content = fs::read_to_string("esempio.txt")?; // Leggere tutto il file
println!("Contenuto del file:\n{}", content);
let mut file = fs::File::open("esempio.txt")?; // Leggere il file con più controllo
let mut buffer = String::new();
file.read_to_string(&mut buffer)?;
println!("Contenuto letto con file::open:\n{}", buffer);
Ok(())
}
Output:
Contenuto del file:
Ciao, questo è il contenuto del file di esempio!
Contenuto letto con file::open:
Ciao, questo è il contenuto del file di esempio!
Deep Dive (Analisi Approfondita)
Rust offre diverse strutture e moduli per la lettura dei file di testo. std::fs::File
e std::io::prelude::*
sono quelli basilari. Àncora da tempi di Rust 1.0, il concetto di ownership e borrowing di Rust – regole che gestiscono l’accesso ai dati – sono fondamentali anche nella lettura dei file, per evitare errori come i “data races”.
In alternativa a read_to_string()
, possiamo usare metodi come read_lines()
o persino accedere a basso livello con buffer di bytes per ottimizzare la lettura in casi specifici.
La combinazione di File::open()
e read_to_string()
permette di gestire meglio possibili errori e offre più controllo attraverso i vari trait di Read
e BufRead
.
See Also (Vedi Anche)
- Rust by Example su file I/O: https://doc.rust-lang.org/rust-by-example/std_misc/file.html
- Documentazione ufficiale di
std::fs
: https://doc.rust-lang.org/std/fs/ - Documentazione ufficiale di
std::io
: https://doc.rust-lang.org/std/io/ - The Rust Programming Language book (capitolo su file I/O): https://doc.rust-lang.org/book/ch12-02-reading-a-file.html