La programación se trata de resolver problemas. No hay forma de que pueda convertirse en un programador competente sin practicar y construir cosas. En este artículo crearemos proyectos para comenzar en el lenguaje de programación de óxido.
Obtenga una cadena más grande
El primer programa intenta determinar la cadena más grande de dos pares de cadenas. El código fuente de ejemplo es como se muestra a continuación:
FN más grande<'a>(str1: & 'a str, str2: &' a str) -> & 'a str
Si str1.len ()> str2.len ()
str1
demás
str2
fn main ()
Str1 = "hola";
Str2 = "Linuxhint";
Sea el resultado = más grande (str1, str2);
println!("Más grande: ", resultado);
Directorio de comprimir en Tarball
El segundo programa comprime el directorio proporcionado en un tarball. El ejemplo del código fuente es como se muestra:
NOTA: Este código requiere biblioteca de compresión/descompresión de Flate2.
use std :: fs :: archivo;
usar Flate2 :: Compression;
use Flate2 :: Write :: Gzencoder;
FN Main () -> Resultado<(), std::io::Error>
Dejar gz = file :: create ("Archivo.alquitrán.gz ");
dejar encoder = gzencoder :: new (gz, compresión :: default ());
Let Mut Tar = Tar :: Builder :: New (ENC);
// Agregar todos los archivos en el directorio actual a Current_Backup
alquitrán.append_dir_all ("."," Current_Backup ")?;
De acuerdo(());
Descomprimir tarball
El siguiente es un programa para descomprimir un tarball. El código fuente es el que se muestra a continuación:
use std :: fs :: archivo;
usar std :: ruta :: PathBuf;
use Flate2 :: Read :: Gzencoder;
usar alquitrán :: Archivo;
use std :: error :: error;
FN Main () -> Resultado<(), Box
>
Let File = File :: Open ("ruta/a/archivo.alquitrán.GZ ")?;
Let Mut Archive = Archive :: New (GZEncoder :: New (File));
println!("Extraído:");
archivo
.entradas ()?
.filter_map (| e | e.OK())
.mapa (| Entrada Mut | -> Resultado>
Let Path = Entrada.camino()?.to_owned ();
Ok (camino.to_path_buf ())
)
.filter_map (| e | e.OK())
.for_each (| x | println!("> ", x.mostrar()));
De acuerdo(())
Encuentre todos los archivos TXT en un directorio
El siguiente programa que podemos construir es uno que encuentra todos los archivos TXT dentro de un directorio: el código se proporciona a continuación:
usar global :: Glob;
use std :: error :: error;
FN Main () -> Resultado<(), Box>
Para el artículo en Glob ("**/*.TXT")?
println!("", artículo?.mostrar());
De acuerdo(())
Generar números aleatorios
Un programa simple para generar números aleatorios.
usar rand :: rng;
fn main ()
Let Mut Range = rand :: thread_rng ();
Dejar num: i32 = rango.gen ();
println!("Aleatorio: ", n1);
Generador de contraseñas
Podemos crear un generador de contraseñas generando caracteres alfanuméricos aleatorios. El código es como se muestra:
usar rand :: rng;
const chars: & [u8] = b "abcdefghijklmnopqrstuvwxyz \
ABCDEFGHIJKLMNOPQRSTU VWXYZ\
0123456789) (*&^%$#@!";
const len: i32 = 25;
fn main ()
Let Mut rng = rand :: thread_rng ();
Deje contraseña: string = (0 ... len)
.mapa (| _ |
Dejar idx = rng.gen_range (0 ... charset.len ());
Charset [IDX] como char
)
.recolectar();
println!("Contraseña: ", contraseña);
Leer CSV
El siguiente programa es leer un archivo CSV. El código es un mostrado:
usar CSV :: Error;
FN Main () -> Resultado<(), Error>
Deje csv_data = "
101, Edith, Masao, [email protected], Colombia, doctor
102, Kellen, Yusuk, [email protected], Nicaragua, oficial de policía
";
Let Mut Reader = csv :: lector :: from_reader (csv_data.as_bytes ());
para fila en el lector.registros()
Let Row = Row?;
println!(
"Id | FirstName: | LastName: | correo electrónico: | país: | profesión: |",
& fila [0],
& fila [1],
& fila [2],
& fila [3],
& fila [4],
& fila [5],
);
De acuerdo(())
Número de núcleos de CPU
Obtenga el número de núcleos lógicos de CPU en el programa:
fn main ()
println!("CPU núcleos: ", num_cpus :: get ());
Ordena vector (i32)
Puedes ordenar un vector como:
fn main ()
Deja que Mut vec = vec![1,23,42,23,45,223,211,122,233,799,123];
VEC.clasificar();
println!("Ordenado: :? ", vec)
Ordenar vector (F64)
También puede ordenar un vector de valores de punto flotante como:
fn main ()
Deja que Mut vec = vec![23.12, 3.44, 5.55, 34.90, 2.0];
VEC.sort_by (| x, y | x.parcial_cmp (y).desenvolver());
println!("Ordenado: :? ", vec);
Mensaje de registro en consola
Puede usar el registro de la creación de mensajes de registro. Un ejemplo simple es como se muestra a continuación:
fn log (comando: & str)
registro :: depuración!("Ejecutar comando: ", comando);
fn main ()
env_logger :: init ();
log ("PS aux | Grep Bash");
// ejecutar con comando:
// RUST_LOG = Depug Cargo Run
Codificar base64
El siguiente código muestra un programa para codificar una cadena a Base64.
use base64 :: encode;
use std :: error :: error;
FN Main () -> Resultado<(), Box>
Let String = B "Bienvenido a Linuxhint";
dejar encoded = encode (string);
println!("Base64: ", codificado);
De acuerdo(())
Decode Base64
Podemos decodificar la cadena Base64 como:
use base64 :: decode;
usar std :: str;
use std :: error :: error;
FN Main () -> Resultado<(), Box>
Let b64 = "v2vsy29tzsb0bybmaw51eghpbnq =";
Let Decoded = & Decode (B64).Unwrap () […];
println!("Cadena: :? ", str :: from_utf8 (decodificado));
De acuerdo(())
Convertir la hora local a otra zona horaria
El siguiente programa convierte la hora local en la zona horaria específica. El código es como se muestra a continuación:
Use Chrono :: Prelude ::*;
fn main ()
dejar local_time = local :: ahora ();
Dejar utc = DateTime :::: from_utc (local_time.naive_utc (), utc);
Sea EST = FixedOffset :: East (5 * 3600);
println!("Hora local: eat", local_time);
println!("UTC Time Now: ", utc);
println!("EST TIME ahora: ", UTC.with_timzaNone (& est));
// Salida de ejemplo
// Hora local: 2022-02-27 14:50:31.014429200 +03: 00 comer
// Tiempo de UTC ahora: 2022-02-27 11:50:31.014429200 UTC
// EST Hora ahora: 2022-02-27 16:50:31.014429200 +05: 00
Distancia entre dos puntos en la tierra
Podemos calcular la distancia entre dos puntos en la Tierra en función de la longitud y la latitud como se muestra en el siguiente ejemplo:
Const Earth_radis: F64 = 6378.1370;
fn main ()
Deje nairobi_lat_deg = -1.286389_f64;
Deje que Nairobi_Long_deg = 36.817223_f64;
Sea el_paso_lat_deg = 31.772543_f64;
Sea El_PASO_LONG_DEG = -106.460953_f64;
Deja que Nairobi_lat = Nairobi_lat_deg.to_radians ();
Sea El_PASO_LAT = EL_PASO_LAT_DEG.to_radians ();
Dejar delta_lat = (nairobi_lat_deg - el_paso_lat_deg).to_radians ();
Dejar delta_long = (nairobi_long_deg - el_paso_long_deg).to_radians ();
Sea angle_inner = (delta_lat / 2.0).pecado().Powi (2) +
nairobi_lat.cos () * el_paso_lat.cos () * (delta_long / 2.0).pecado().Powi (2);
Deja Central_angle = 2.0 * Angle_inner.sqrt ().como en();
Let Distancia = Earth_radis * Central_angle;
println!("La distancia entre Nairobi y El Paso es: :.2 km ", distancia);
Extraer esquema de URL
Podemos extraer el host y el esquema de una cadena de URL proporcionada como:
usar url :: url, host, parseError;
FN Main () -> Resultado<(), ParseError>
Let String = "https: // linuxhint.com ";
Sea url = url :: parse (cadena)?;
Sea esquema = URL.esquema();
Dejar host = url.anfitrión();
println!("Esquema: ", esquema);
println!("Anfitrión: :?", anfitrión);
De acuerdo(())