2015-04-05 3 views
6

Ho sentito che il carico ha la possibilità di ricompilare automaticamente i file sorgente modificati, ma sto facendo fatica a capire come dirgli di farlo.Come posso ottenere il carico per ricompilare automaticamente i file modificati?

Per ora, sto eseguendo manualmente cargo build o cargo run ogni volta che voglio digitare controllare il mio codice. Preferirei invece salvare semplicemente il file e vedere i risultati nella finestra del terminale adiacente.

Nel caso non si abbia ancora idea di cosa sto parlando, sto cercando l'equivalente del carico di sbt ~compile o sbt ~run.

Sembra stranamente difficile da trovare, quindi sto iniziando a chiedermi se è davvero supportato. È possibile che qualcuno abbia detto che il carico potrebbe rilevare i file modificati e ricompilarli quando ciò che intendeva dire era che il carico poteva rilevare immutati e evitare ricompilarli, come make.

risposta

2

Credo che la distinzione sia che l'esecuzione di cargo run due volte non genera il codice due volte, a meno che i file di input non siano stati modificati. Per quanto ne so, Cargo non ha la funzionalità che si desidera integrare. È possibile presentare una richiesta di funzionalità. Nel frattempo, ti suggerisco di usare solo watch. Puoi anche usare qualcosa come guard. Usare watch è più semplice, ma eseguiresti il ​​tuo codice ogni N secondi. guard richiederebbe più setup, ma sarebbe un po 'più efficiente.

3

Non sembra esserci alcun supporto integrato, ma esiste un'estensione (cargo-watch) per rilevare le modifiche utilizzando inotify.

Quando l'ho trovato, non funzionava con la ruggine stabile (o corrente), ma da allora l'ho riparato. Potrebbe ancora funzionare, ma sicuramente accelera il ciclo di compilazione/correzione errori.

3

Nel caso in cui si stia lavorando su un progetto server (ad es. Ferro) che continua a essere in esecuzione e ne occorre riavviare quando i file cambiano, cargo watchdoesn't work as of writing this.

Nel frattempo, è possibile installare watchexec in questo modo:

cargo install watchexec 

E poi usare in questo modo:

watchexec --restart "cargo run" 
+0

Grazie :) @robinst –

+1

@PiyushChauhan Ho appena aggiornato la risposta utilizzare invece uno strumento integrato in Rust, che rende l'installazione semplice. Controlla :). – robinst

+0

Molto bisognoso di compilazione incrementale, spero che lo pubblichino presto –