Rust on loistava kieli sulautettuun kehityksen
Yksinkertaisesti Rustia voisi kuvailla ohjelmointikieleksi, jolla voi tehdä ohjelmia sulautettuun ympäristöön samalla tarkkuudella kuin C.
Mutta toisaalta kielessä on paljon korkeamman tason abstraktioita kuten iteraattorit. Ohjelmointi muistuttaa siksi tuottavuudeltaan esimerkiksi Python-ohjelmointia.
Tämän lisäksi Rustilla ohjelmointi tekee ohjelmista paljon luotettavampia. Rust poistaa C:tä kiusaavat muistinvarausvirheet.
Rustin merkittävin huono puoli on se, että se vaatii kieltämättä paljon osaamista. Se, että Rustilla voi ohjelmoida kaikki hienoudet tuntien on kuin pitäisi osata kaikki C:n hienoudet, Pythonin hienoudet ja sitten vielä kolmannes lisää.
Mutta kyllä Rustilla voi ohjelmoida sulautettuja järjestelmiä ilman hienoimpien piirteiden käyttöä. C-ohjelmoija voi tuntea olonsa Rustin kanssa kotoisaksi ilman kovin suurta uuden opettelua. Mutta silloin kyllä vain raapaistaan pintaa.
Rustissa kehittyneemmissä ominaisuuksissa ei ole kuitenkaan mitään liikaa, turhaa tai tarpeetonta.
Rust on vaikeudesta huolimatta rakastetuin ohjelmointkieli. Ne, jotka sitä käytävät eivät halua enää vaihtaa toiseen ohjelmointikieleen. StackOverflowin kehittäjien kyselyssä 2021 Rust oli rakastetuin ohjelmointikieli kuudetta vuotta peräkkäin. 87% Rustin käyttäjistä ei halua siirtyä mihinkään muuhun kieleen.
Rustin olennaisimmat ominaisuudet sulautetussa käytössä ovat:
- selkeästi tavupohjaiseen tietokoneeseen määritellyt tietotyypit (esim. i8, i16, i32, ...)
- staattinen tyypitys
- tyyppien päättely funktioiden sisällä niin, ettei hankalaa tyyppimäärittelyä tarvitse useinkaan merkitä, jos se on muutenkin pääteltävissä
- rustin abstraktiot ovat yleensä "zero-cost" ne helpottavat ohjelmointia, mutta prosessorille ei niistä tule lisää tekemistä
- kyky toimia tarvittaessa kokonaan ilman dynaamista muistinvarausta, tietyillä edellytyksillä ohjelman muistinkulutus on ennalta tunnettu
- osajoukko standardikirjastosta (Core) antaa perustoiminnallisuuden, mutta se ei tarvitse dynaamista muistinhallintaa; se on myös helppo portata uusiin sulautettuihin prosessoreihin
- ei tarvita "runtimeä", jossa olisi esimerkiksi roskankeruu; sulautettu Rust-ohjelma on vain joitakin kilotavuja (noin 20 kB ilman erikoistemppuiluja), kun minimi Go-ohjelma on yli puoli megatavua
- valmis tuki kaikille tärkeimmille sulautetuille prosessoreille
- Monisäikeisen ohjelman kykyä koskea jaettuihin muistialueisiin on automaattisesti rajoitettu turvallisiin operaatioihin jo kielen tasolla
- helppo linkittyminen C-funktioihin (FFI)
- olio-ohjelmoinnin sijaan täytettävissä on traitit, jotka toteuttavat osan olio-ohjelmoinnin hyvistä puolista olio-ohjelmointia tehokkaammin
- geneeriset tyypit monistavat saman toiminnallisuuden eri tyypeille niin, että jokaisen implementointi optimoidaan erikseen (esim. tavutaulukko ja merkkijonotaulukko toteutetaan samalla lähdekoodilla, mutta kummallekin käännetään oma erikseen optimoitu implementaatio)
- erittäin kehittynyt makrojärjestelmä mahdollistaa sovellusriippuvat tehokkaasti toteutetut abstraktiot
- mahdollisuus käyttää asynkronisia IO-funktioita; näitä voi käyttää kuin säikeitä, mutta odotus toteutetaan tehokkaalla tilakoneella
- mahdollisuus tehdä "unsafe"-operaatioita merkitsemällä ne; esim. täysin C:n pointtereita vastaavat operaatiot ovat käytettävissä unsafe-lohkon sisällä
- integroitu "make" ja kirjastovarastojen hallinta nimeltä
cargo
seuraa parhaita moderneja paketointikäytäntöjä - valtava määrä valmiita kirjastoja