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
I passaggi per installare il kernel jupyter sono i seguenti:
- Installa il binario
evcxr_jupyter:cargo install --locked evcxr_jupyter - Installa il kernel:
evcxr_jupyter --install(Nota: assicurati che$HOME/.cargo/binsia nella tua variabilePATH)
Utilizzare il Kernel Jupyter in Visual Studio Code
- Installa il pacchetto
jupyternel tuo ambiente python - Installa l’estensione Jupyter per VS Code
- Crea un nuovo file
.ipynbe aprilo - Seleziona il Kernel Jupyter
- Clicca sul pulsante Select Kernel in alto a destra
- Scegli Jupyter Kernel …
- 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 SIZEImposta la dimensione della cache in MiB (usa per una compilazione più veloce):opt LEVELImposta 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
}| Variabile | Tipo |
| output | Option<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, …
segue la stessa sintassi di cargo toml ↩