Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Prerequisiti

Installa Rust seguendo la guida di installazione

Evcxr

I programmi Rust possono anche essere eseguiti in un ambiente interattivo. Evcxr è un contesto di valutazione per Rust e fornisce un REPL (analogo a ipython), e un Kernel Jupyter.

Installazione del Kernel Jupyter

Guida ufficiale

I passaggi per installare il kernel jupyter sono i seguenti:

  1. Installa il binario evcxr_jupyter: cargo install --locked evcxr_jupyter
  2. Installa il kernel: evcxr_jupyter --install (Nota: assicurati che $HOME/.cargo/bin sia nella tua variabile PATH)

Utilizzare il Kernel Jupyter in Visual Studio Code

Guida ufficiale

  1. Installa il pacchetto jupyter nel tuo ambiente python
  2. Installa l’estensione Jupyter per VS Code
  3. Crea un nuovo file .ipynb e aprilo
  4. Seleziona il Kernel Jupyter
    1. Clicca sul pulsante Select Kernel in alto a destra
    2. Scegli Jupyter Kernel …
    3. Scegli il kernel Rust evcxr che hai installato prima

Importare dipendenze

Ora che hai selezionato il kernel puoi iniziare a scrivere codice ed eseguirlo. Per importare dipendenze puoi utilizzare la parola chiave :dep1.

:dep renoir = { git = "https://github.com/deib-polimi/renoir" }

Ora con un’istruzione use possiamo importare quello che ci serve per utilizzare renoir.

#![allow(unused)]
fn main() {
use renoir::prelude::*;
}

Prelude raccomandato

Il kernel evcxr può essere configurato usando parole chiave speciali secondo le tue necessità. Elenchiamo alcune delle modifiche più utili che puoi fare (queste possono essere messe in una cella all’inizio del notebook)

  • :cache SIZE Imposta la dimensione della cache in MiB (usa per una compilazione più veloce)
  • :opt LEVEL Imposta il livello di ottimizzazione, il default è nessuna ottimizzazione (per un’esecuzione più veloce usa 1,2 o 3)

Esempio

#![allow(unused)]
fn main() {
:cache 500
:opt 1
:dep renoir = { git = "https://github.com/deib-polimi/renoir" }
use renoir::prelude::*;
}
#![allow(unused)]
fn main() {
let ctx = StreamContext::new_local();

let result = ctx.stream_par_iter(0..100)
    .map(|x| (x, x * x))
    .collect_vec();

ctx.execute_blocking();
let output = result.get()
}
#![allow(unused)]
fn main() {
// La parola chiave :vars stamperà le variabili che hai impostato (Nota: le regole di lifetime di Rust si applicano ancora!)
:vars
}
VariabileTipo
outputOption<Vec<(i32,i32)>>
#![allow(unused)]
fn main() {
println!("{output:?}");
}

Some([(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25), (6, 36), (7, 49), (8, …


  1. segue la stessa sintassi di cargo toml