Rust:
Escribiendo un archivo de texto
Cómo hacerlo:
La biblioteca estándar de Rust proporciona herramientas robustas para la manipulación de archivos, encapsuladas principalmente dentro de los módulos std::fs y std::io. Aquí hay un ejemplo básico para crear y escribir en un archivo de texto:
use std::fs::File;
use std::io::prelude::*;
fn main() -> std::io::Result<()> {
let mut file = File::create("hello.txt")?;
file.write_all(b"Hello, world!")?;
Ok(())
}Después de ejecutar este código, encontrarás un archivo llamado hello.txt con el contenido “Hello, world!”.
Para escenarios más complejos, como añadir a un archivo o manejar datos más grandes de manera eficiente, Rust ofrece funcionalidades adicionales. Aquí te mostramos cómo añadir texto a un archivo existente:
use std::fs::OpenOptions;
use std::io::prelude::*;
fn main() -> std::io::Result<()> {
let mut file = OpenOptions::new()
.write(true)
.append(true)
.open("hello.txt")?;
file.write_all(b" Añadiendo más texto.")?;
Ok(())
}Ejecutar esto añadirá " Añadiendo más texto." al final de hello.txt.
En algunos casos, aprovechar las bibliotecas de terceros puede simplificar las operaciones con archivos. La crate serde, combinada con serde_json, por ejemplo, permite serializar y deserializar estructuras de datos desde y hacia el formato JSON, ofreciendo un enfoque de alto nivel para la escritura de archivos:
use serde::{Serialize, Deserialize};
use serde_json;
use std::fs::File;
#[derive(Serialize, Deserialize)]
struct User {
id: u32,
name: String,
}
fn main() -> std::io::Result<()> {
let user = User { id: 1, name: "Jane Doe".into() };
let file = File::create("user.json")?;
serde_json::to_writer(file, &user)?;
Ok(())
}Después de ejecutar el código anterior, user.json contendrá una representación JSON de la estructura User. Ten en cuenta que usar serde y serde_json requiere agregar estas crates a tu Cargo.toml.
Escribir archivos de texto en Rust, ya sea a través de la biblioteca estándar o con la ayuda de crates externas, es una manera directa pero potente de gestionar la persistencia de datos en tus aplicaciones.