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:
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:
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.