Link Search Menu Expand Document

Esempio1: Realizzazione di un tool per generare password forti

Il programma dovrà generare una password forte prendendo in input la lunghezza della password desiderata.

$ cargo new generatore_pass

https://doc.rust-lang.org/book/ch12-01-accepting-command-line-arguments.html

Di seguito il codice definitivo che andiamo a commentare:

use std::env;
use rand::Rng; 

fn main() {
    println!("Inizio generatore...");
    let mut rng = rand::thread_rng();
    let args: Vec<String> = env::args().collect();
    // arg[0]=il nome programma
    // arg[1]= il primo valore
    // arg[..]= ecc...
    println!("La lunghezza scelta:{}",&args[1]);
    let lunghezza_password: i32 = args[1].parse().expect("Not a number!");
    let mut mypassword = "".to_string();
    let mut index: i32 = 0;
    let mut n2: u16 = 0;
    
    while index < lunghezza_password {
        n2 = rng.gen_range(1..=100);
        mypassword =  mypassword.to_string() + &n2.to_string();  
        index += 1;
    }  
    println!("La tua nuova password è: {}", &mypassword);
}

  • use rand::Rng
    • la parola use permette di caricare le librerie che vi servono. Nel nostro caso env e Rng
  • Nella funzione main abbiamo diverse cose interessanti:
    1. let mut [nome-variabile] : definisce una variabile mutabile, cioè che potrà assumere diversi valori durante l’esecuzione
    2. let [nome-variabile]: senza mut la variabile assumere solo un valore.
    3. tipologia di variabile: ogni tipo di variabile deve essere definito esplicitamente, altrimenti generarà errore.
    4. Concatenare due stringhe: Bisogna tenere presente quando lavoriamo con delle variabile la loro tipologia e per concatenare due stringhe anche la zona di memoria dove avviene l’operazione. Per non complicare adesso troppo questi ragionamenti possiamo dire che le due variabili che dobbiamo unire devono essere dello stesso tipo e per fare questo usiamo to_string() che assicura questo lavoro. E come accade per i puntatori in C , per accedere al valore contenuto nella zona di memoria della variabile devo mettere & davanti come per &n2
    5. Quando invece devo stampare a video useremo la macro println!() e le parentesi graffe sono l’interpolazione necessarie che preleva il contenuto della variabile &mypassword e la inserisce all’interno della stringa. (Come avviene per altri linguaggi di programmazione)
    6. Nota: Nelle variabili notate un u16 o i32 che sono rispettivamente intero senza segno di 16bit e intero con segno di 32bit vedete questo link per maggiori dettagli link1

Copyright © 2023 RICSystem - partner DIAGO SRL -