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

Liite D: Hyödylliset kehitystyökalut

Tässä liitteessä käsittelemme joitakin hyödyllisiä kehitystyökaluja, joita Rust-projekti tarjoaa. Käymme läpi automaattisen muotoilun, nopeita tapoja soveltaa varoitusten korjauksia, linterin ja integraation IDE:iden kanssa.

Automaattinen muotoilu rustfmt-työkalulla

rustfmt-työkalu muotoilee koodisi yhteisön koodityylin mukaisesti. Monet yhteistyöhankkeet käyttävät rustfmt-työkalua estääkseen kiistoja siitä, mitä tyyliä Rust-kirjoituksessa käytetään: kaikki muotoilevat koodinsa työkalulla.

Rust-asennukset sisältävät rustfmt-työkalun oletuksena, joten järjestelmässäsi pitäisi jo olla ohjelmat rustfmt ja cargo-fmt. Nämä kaksi komentoa vastaavat rustc- ja cargo- komentoja siinä mielessä, että rustfmt tarjoaa tarkemman hallinnan ja cargo-fmt ymmärtää Cargoa käyttävän projektin käytännöt. Muotoillaksesi minkä tahansa Cargo-projektin, anna seuraava komento:

$ cargo fmt

Tämän komennon suorittaminen muotoilee kaiken nykyisen paketin Rust-koodin. Sen pitäisi muuttaa vain koodityyliä, ei koodin semantiikkaa. Lisätietoja rustfmt-työkalusta löytyy sen dokumentaatiosta.

Koodin korjaaminen rustfix-työkalulla

rustfix-työkalu sisältyy Rust-asennuksiin ja voi automaattisesti korjata kääntäjän varoituksia, joilla on selkeä korjaustapa, joka todennäköisesti on se, mitä haluat. Olet todennäköisesti nähnyt kääntäjän varoituksia aiemmin. Esimerkiksi tarkastele tätä koodia:

Filename: src/main.rs

fn main() {
    let mut x = 42;
    println!("{x}");
}

Tässä määrittelemme muuttujan x muuttuvaksi, mutta emme koskaan muuta sitä. Rust varoittaa siitä:

$ cargo build
   Compiling myprogram v0.1.0 (file:///projects/myprogram)
warning: variable does not need to be mutable
 --> src/main.rs:2:9
  |
2 |     let mut x = 0;
  |         ----^
  |         |
  |         help: remove this `mut`
  |
  = note: `#[warn(unused_mut)]` on by default

Varoitus ehdottaa, että poistamme mut-avainsanan. Voimme soveltaa ehdotusta automaattisesti rustfix-työkalulla suorittamalla komennon cargo fix:

$ cargo fix
    Checking myprogram v0.1.0 (file:///projects/myprogram)
      Fixing src/main.rs (1 fix)
    Finished dev [unoptimized + debuginfo] target(s) in 0.59s

Kun katsomme tiedostoa src/main.rs uudelleen, huomaamme, että cargo fix on muuttanut koodin:

Filename: src/main.rs

fn main() {
    let x = 42;
    println!("{x}");
}

Muuttuja x on nyt muuttumaton, eikä varoitusta enää näy.

Voit myös käyttää cargo fix -komentoa siirtääksesi koodiasi eri Rust-editionien välillä. Editioneista kerrotaan liitteessä E.

Lisää linttauksia Clippyllä

Clippy-työkalu on kokoelma linttauksia, jotka analysoivat koodiasi, jotta voit havaita yleisiä virheitä ja parantaa Rust-koodiasi. Clippy sisältyy vaki Rust-asennuksiin.

Suorittaaksesi Clippyn linttauksia missä tahansa Cargo-projektissa, anna seuraava komento:

$ cargo clippy

Esimerkiksi oletetaan, että kirjoitat ohjelman, joka käyttää matemaattisen vakion likiarvoa, kuten piitä, kuten tämä ohjelma tekee:

Filename: src/main.rs
fn main() {
    let x = 3.1415;
    let r = 8.0;
    println!("the area of the circle is {}", x * r * r);
}

Tämän projektin cargo clippy -suoritus tuottaa tämän virheen:

error: approximate value of `f{32, 64}::consts::PI` found
 --> src/main.rs:2:13
  |
2 |     let x = 3.1415;
  |             ^^^^^^
  |
  = note: `#[deny(clippy::approx_constant)]` on by default
  = help: consider using the constant directly
  = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant

Tämä virhe kertoo, että Rustissa on jo tarkempi PI-vakio määriteltynä ja että ohjelmasi olisi oikeampi, jos käyttäisit vakiota likiarvon sijaan. Muuttaisit sitten koodisi käyttämään PI-vakiota.

Seuraava koodi ei tuota Clippyltä virheitä tai varoituksia:

Filename: src/main.rs
fn main() {
    let x = std::f64::consts::PI;
    let r = 8.0;
    println!("the area of the circle is {}", x * r * r);
}

Lisätietoja Clippystä löytyy sen dokumentaatiosta.

IDE-integraatio rust-analyzer-työkalulla

IDE-integraation helpottamiseksi Rust-yhteisö suosittelee rust-analyzer -työkalun käyttöä. Tämä työkalu on joukko kääntäjäkeskeisiä apuohjelmia, jotka käyttävät Language Server Protocol -määritystä, joka on spesifikaatio IDE:iden ja ohjelmointikielten väliselle viestinnälle. Erilaiset asiakkaat voivat käyttää rust-analyzer-työkalua, kuten Visual Studio Coden Rust-analyzer-liitännäinen.

Vieraile rust-analyzer-projektin kotisivulla saadaksesi asennusohjeet ja asenna sitten kielipalvelintuki omaan IDE:esi. IDE:si saa ominaisuuksia, kuten automaattisen täydennyksen, siirtymisen määrittelyyn ja rivinsisäiset virheet.