Advertisement
AntonioVillanueva

Ejercicio Rust Write Read Struct Enum

Feb 21st, 2025
349
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 2.18 KB | None | 0 0
  1. //Ejercicio 92-93 Rust
  2. /*
  3.  CONTENIDO DE Cargo.toml
  4.  
  5. [package]
  6. name = "ejemplos"
  7. version = "0.1.0"
  8. edition = "2021"
  9.  
  10. # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
  11.  
  12. [dependencies]
  13. enum_str = "0.1.2"  
  14.  */
  15. #[allow(unused_imports)]
  16. #[warn(dead_code)]
  17. use std::fs::OpenOptions;
  18. use std::io::Write;
  19. use std::fs;
  20.  
  21. //Una enumeracio de especialidades
  22. enum Esp {
  23.     IT,RecursosHumanos,Marketing
  24. }
  25.  
  26. //Estructura Empleado
  27. struct Empleado {
  28.     nombre:String,
  29.     edad:u32,
  30.     especialidad:Esp
  31. }
  32.  
  33. //Lee un fichero externo {nombre}
  34. fn lee (nombre:&String){
  35.     let contenido=fs::read_to_string (nombre).expect ("Error");
  36.     println! ("{}","\n");
  37.     println! ("{}",contenido);
  38. }
  39.  
  40. //Escribe en un fichero externo {nombre} los datos de una estructura
  41. fn escribe (nombre :&String,datos :&Empleado){
  42.     let mut tmp:String=String::new();
  43.     let mut fichero=OpenOptions::new()
  44.         .create(true)
  45.         .append(true)
  46.         .open(nombre)
  47.         .expect ("Error apertura ");
  48.     tmp.push_str ( &(datos.nombre).to_string());
  49.     tmp.push('\n');
  50.     fichero.write_all (tmp.as_bytes()).expect ("Error escritura");
  51.  
  52.         tmp.push_str  ( &((datos.edad).to_string()+"\n"));
  53.     fichero.write_all (tmp.as_bytes()).expect ("Error escritura");
  54.  
  55.     match datos.especialidad{
  56.         Esp::IT=>tmp.push_str ("IT"),
  57.         Esp::RecursosHumanos => tmp.push_str ("Recursos Humanos"),
  58.         Esp::Marketing =>tmp.push_str ( "Marketing"),
  59.     }
  60.  
  61.     fichero.write_all (tmp.as_bytes()).expect ("Error escritura");
  62.  
  63. }
  64.  
  65. fn main (){
  66.  
  67.     //Nombre del fichero externo
  68.     let fichero:String ="ficha.txt".to_string();
  69.  
  70.     //Crea un empleado con estructura Empleado
  71.     let mut empleado = Empleado{
  72.         nombre:"Tony".to_string(),
  73.         edad:57,
  74.         especialidad:Esp::IT
  75.     };
  76.  
  77.     //Escribe este empleado
  78.     escribe(&fichero ,&empleado);
  79.  
  80.  
  81.     //Modifica el empleado
  82.     empleado.nombre ="Icaro".to_string();
  83.     empleado.edad =18;
  84.     empleado.especialidad = Esp::RecursosHumanos;
  85.    
  86.     //Escribe
  87.         escribe(&fichero,&empleado);
  88.  
  89.     //Modifica
  90.     empleado.nombre ="F4LEC".to_string();
  91.     empleado.edad=100;
  92.     empleado.especialidad =Esp::Marketing; 
  93.    
  94.     //Escribe
  95.     escribe(&fichero,&empleado);
  96.  
  97.     //Lectura fichero externo
  98.     lee (&fichero);
  99.  
  100. }
  101.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement