10 principais exemplos de código de programação de ferrugem

10 principais exemplos de código de programação de ferrugem
A programação é sobre solução de problemas. Não há como você se tornar um programador proficiente sem praticar e construir coisas. Neste artigo, criaremos projetos para iniciar você na linguagem de programação de ferrugem.

Obtenha a maior corda

O primeiro programa tenta determinar a maior string de dois pares de strings. O código -fonte do exemplo é como mostrado abaixo:

fn maior<'a>(str1: & 'a str, str2: &' a str) -> & 'a str
se str1.Len ()> STR2.Len ()
STR1
outro
STR2


fn main ()
Seja Str1 = "Hello";
Seja STR2 = "Linuxhint";
Let Result = Maior (STR1, STR2);
println!("Maior: ", resultado);

Compressor de diretório em tarball

O segundo programa comprime o diretório fornecido em um tarball. O exemplo do código -fonte é como mostrado:

OBSERVAÇÃO: Este código requer biblioteca de compressão/descompressão do Flate2.

use std :: fs :: arquivo;
Use Flate2 :: Compressão;
Use Flate2 :: Write :: Gzencoder;
fn main () -> resultado<(), std::io::Error>
Deixe gz = arquivo :: create ("Arquivo.alcatrão.gz ");
Let Encoder = gzencoder :: new (gz, compressão :: default ());
Deixe Mut Tar = Tar :: Builder :: new (ENC);
// Adicione todos os arquivos no diretório atual ao current_backup
alcatrão.Append_Dir_all ("."," current_backup ")?;
OK(());

Descompacte o tarball

Em seguida é um programa para descomprimir um tarball. O código -fonte é como mostrado abaixo:

use std :: fs :: arquivo;
use std :: path :: pathbuf;
Use Flate2 :: Leia :: gzencoder;
Use Tar :: Archive;
Use std :: error :: error;
fn main () -> resultado<(), Box>
Deixe o arquivo = arquivo :: aberto ("Path/to/Archive.alcatrão.gz ")?;
Seja Mut Archive = Archive :: new (Gzencoder :: new (arquivo));
println!("Extraído:");
arquivo
.entradas ()?
.filtro_map (| e | e.OK())
.mapa (| Entrada mut | -> resultado>
Deixe o caminho = entrada.caminho()?.to_owned ();
OK (caminho.to_path_buf ())
)
.filtro_map (| e | e.OK())
.for_each (| x | println!("> ", x.mostrar()));
OK(())

Encontre todos os arquivos TXT em um diretório

O próximo programa que podemos construir é aquele que encontra todos os arquivos TXT em um diretório: o código é conforme fornecido abaixo:

use glob :: glob;
Use std :: error :: error;
fn main () -> resultado<(), Box>
para item em glob ("**/*.TXT")?
println!("", item?.mostrar());

OK(())

Gerar números aleatórios

Um programa simples para gerar números aleatórios.

use rand :: rng;
fn main ()
deixe mut range = rand :: thread_rng ();
Deixe num: i32 = intervalo.gen ();
println!("Random: ", n1);

Gerador de senhas

Podemos criar um gerador de senha gerando caracteres alfanuméricos aleatórios. O código é como mostrado:

use rand :: rng;
const charset: & [u8] = b "abcdefghijklmnopqrststwxyz \

a B C D e F G H I J K L M N o p q R S T U V W x y Z\

0123456789) (*&^%$#@!";
const len: i32 = 25;
fn main ()
Seja mut rng = rand :: thread_rng ();
Deixe a senha: string = (0… len)
.mapa (| _ |
Deixe idx = rng.gen_range (0… charset.len ());
Charset [idx] como char
)
.colecion ();
println!("Senha: ", senha);

Leia CSV

O próximo programa é ler um arquivo CSV. O código é um mostrado:

Use CSV :: Error;
fn main () -> resultado<(), Error>
Seja csv_data = "
101, Edith, Masao, [email protected], Colômbia, Doutor
102, Kellen, Yusuk, [email protected], Nicarágua, policial
";
Deixe Mut Reader = CSV :: Reader :: From_Reader (CSV_DATA.as_bytes ());
Para Row in Reader.Records ()
Deixe a linha = linha?;
println!(
"Id | primeiro nome: | LastName: | email: | country: | profissão: |",
& ROW [0],
& Row [1],
& Row [2],
& Row [3],
& Row [4],
& Row [5],
);

OK(())

Número de núcleos da CPU

Obtenha o número de núcleos lógicos da CPU no programa:

fn main ()
println!("Núcleos da CPU: ", num_cpus :: get ());

Classificar vetor (i32)

Você pode classificar um vetor como:

fn main ()
Deixe Mut Vec = VEC![1,23,42,23,45,223,211,122,233,799.123];
VEC.organizar();
println!("Classificado: :? ", vec)

Classificar vetor (F64)

Você também pode classificar um vetor de valores de ponto flutuante como:

fn main ()
Deixe Mut Vec = VEC![23.12, 3.44, 5.55, 34.90, 2.0];
VEC.Sort_by (| x, y | x.parcial_cmp (y).desembrulhar());
println!("Classificado: :? ", vec);

Mensagem de log para console

Você pode usar o log Criar para criar mensagens de log. Um exemplo simples é como mostrado abaixo:

FN log (comando: & str)
LOG :: Debug!("Comando em execução: ", comando);

fn main ()
Env_logger :: init ();
log ("PS AUX | Grep Bash");
// execute com comando:
// rust_log = carga de debug

Encodte base64

O código abaixo mostra um programa para codificar uma string para base64.

Use Base64 :: Encode;
Use std :: error :: error;
fn main () -> resultado<(), Box>
Deixe String = B "Bem -vindo ao Linuxhint";
deixe codificar = codificar (string);
println!("Base64: ", codificado);
OK(())

Decodificar base64

Podemos decodificar a string base64 como:

use base64 :: decodge;
Use std :: str;
Use std :: error :: error;
fn main () -> resultado<(), Box>
Seja B64 = "V2VSY29TZSB0BYBMAW51EGHPBNQ =";
Deixe decodificado = & decodificar (B64).desembrlap () […];
println!("Corda: :? ", str :: from_utf8 (decodificado));
OK(())

Converta a hora local em outro fuso horário

O programa abaixo converte horário local em fuso horário especificado. O código é como mostrado abaixo:

Use Chrono :: Prelude ::*;
fn main ()
Seja local_time = local :: agora ();
Deixe UTC = DateTime :::: from_utc (local_time.nening_utc (), UTC);
Deixe EST = FILLOFFSET :: East (5 * 3600);
println!("Hora local: eat", local_time);
println!("Hora da UTC agora: ", utc);
println!("Time estro agora: ", UTC.with_timeZone (& est));
// Exemplo de saída
// Hora local: 2022-02-27 14:50:31.014429200 +03: 00 Eat
// Hora da UTC agora: 2022-02-27 11:50:31.014429200 UTC
// Hora do EST agora: 2022-02-27 16:50:31.014429200 +05: 00

Distância entre dois pontos na terra

Podemos calcular a distância entre dois pontos na Terra com base em longitude e latitude, como mostrado no exemplo abaixo:

const Earth_radis: f64 = 6378.1370;
fn main ()
Seja nairobi_lat_deg = -1.286389_F64;
Seja nairobi_long_deg = 36.817223_F64;
Seja el_paso_lat_deg = 31.772543_F64;
Seja el_paso_long_deg = -106.460953_F64;
Seja nairobi_lat = nairobi_lat_deg.to_radians ();
Seja el_paso_lat = el_paso_lat_deg.to_radians ();
Deixe delta_lat = (Nairobi_lat_deg - el_paso_lat_deg).to_radians ();
Deixe delta_long = (Nairobi_long_deg - el_paso_long_deg).to_radians ();
Deixe Angle_inner = (delta_lat / 2.0).pecado().Powi (2) +
Nairobi_lat.cos () * el_paso_lat.cos () * (delta_long / 2.0).pecado().Powi (2);
Deixe central_angle = 2.0 * angle_inner.sqrt ().como em();
Deixe a distância = Earth_radis * central_angle;
println!("A distância entre Nairóbi e El Paso é: :.2 km ", distância);

Extrair esquema de URL

Podemos extrair o host e o esquema de uma string de URL fornecida como:

use url :: url, host, parseerror;
fn main () -> resultado<(), ParseError>
Let String = "https: // linuxhint.com ";
Deixe url = url :: parse (string)?;
Deixe o esquema = url.esquema ();
Deixe host = URL.hospedar();
println!("Esquema: ", esquema);
println!("Hospedar: :?", hospedar);
OK(())