Hello, World!
Nyt kun olet asentanut Rustin, on aika kirjoittaa ensimmäinen Rust-ohjelmasi. Uutta kieltä
opiskellessa on perinteistä kirjoittaa pieni ohjelma, joka tulostaa tekstin Hello, world!
näytölle, joten teemme saman tässä!
Huom: Tämä kirja olettaa perustuntemusta komentorivistä. Rust ei aseta erityisiä vaatimuksia editorillesi, työkaluillesi tai koodisi sijainnille, joten jos haluat käyttää IDE:tä komentorivin sijaan, käytä vapaasti suosikki-IDE:täsi. Monilla IDE:illä on nyt jonkin verran Rust-tukea; katso IDE:n dokumentaatiosta yksityiskohdat. Rust-tiimi on keskittynyt erinomaisen IDE-tuen mahdollistamiseen
rust-analyzer-työkalun kautta. Katso Liite D lisätietoja varten.
Projektikansion luominen
Aloitat luomalla kansion Rust-koodillesi. Rustille ei ole väliä, missä koodisi sijaitsee, mutta tämän kirjan harjoituksia ja projekteja varten suosittelemme projects-kansion luomista kotihakemistoosi ja kaikkien projektiesi säilyttämistä siellä.
Avaa terminaali ja kirjoita seuraavat komennot luodaksesi projects-kansion ja “Hello, world!” -projektin kansion projects-kansion sisään.
Linuxissa, macOS:ssä ja PowerShellissä Windowsilla kirjoita tämä:
$ mkdir ~/projects
$ cd ~/projects
$ mkdir hello_world
$ cd hello_world
Windows CMD:ssä kirjoita tämä:
> mkdir "%USERPROFILE%\projects"
> cd /d "%USERPROFILE%\projects"
> mkdir hello_world
> cd hello_world
Rust-ohjelman perusteet
Seuraavaksi luo uusi lähdekooditiedosto ja kutsu sitä main.rs. Rust-tiedostot päättyvät aina .rs-päätteeseen. Jos käytät tiedostonimessä useampaa sanaa, käytä niiden erottamiseen alaviivaa. Käytä esimerkiksi hello_world.rs eikä helloworld.rs.
Avaa juuri luomasi main.rs-tiedosto ja kirjoita siihen Listauksen 1-1 koodi.
fn main() {
println!("Hello, world!");
}
Hello, world!Tallenna tiedosto ja palaa terminaali-ikkunaan ~/projects/hello_world-kansiossa. Linuxissa tai macOS:ssä kirjoita seuraavat komennot tiedoston kääntämiseksi ja suorittamiseksi:
$ rustc main.rs
$ ./main
Hello, world!
Windowsissa kirjoita komento .\main ./main-komennon sijaan:
> rustc main.rs
> .\main
Hello, world!
Käyttöjärjestelmästä riippumatta merkkijono Hello, world! pitäisi tulostua terminaaliin. Jos et
näe tätä tulostetta, katso Vianmääritys -osio asennusluvusta
saadaksesi apua.
Jos Hello, world! tulostui, onnittelut! Olet virallisesti kirjoittanut Rust-ohjelman. Se tekee
sinusta Rust-ohjelmoijan—tervetuloa!
Rust-ohjelman rakenne
Käydään tämä “Hello, world!” -ohjelma läpi yksityiskohtaisesti. Tässä on ensimmäinen palanen:
fn main() {
}
Nämä rivit määrittelevät funktion nimeltä main. main-funktio on erityinen: se on aina ensimmäinen
koodi, joka suoritetaan jokaisessa ajettavassa Rust-ohjelmassa. Tässä ensimmäinen rivi julistaa
main-nimisen funktion, jolla ei ole parametreja eikä se palauta mitään. Jos parametreja olisi,
ne olisivat sulkeissa (()).
Funktion runko on kääritty {}-merkkeihin. Rust vaatii aaltosulkeet kaikkien funktioiden runkojen
ympärille. On hyvä tyyli sijoittaa avaava aaltosulje samalle riville funktion julistuksen kanssa
ja jättää niiden väliin yksi välilyönti.
Huom: Jos haluat noudattaa yhtenäistä tyyliä Rust-projekteissa, voit käyttää automaattista muotoilutyökalua nimeltä
rustfmtmuotoillaksesi koodisi tietyssä tyylissä (lisätietoarustfmt-työkalusta Liitteessä D). Rust-tiimi on sisällyttänyt tämän työkalun standardiin Rust-jakeluun, kutenrustc-kääntäjäkin, joten sen pitäisi olla jo asennettuna tietokoneellesi!
main-funktion rungossa on seuraava koodi:
#![allow(unused)]
fn main() {
println!("Hello, world!");
}
Tämä rivi tekee kaiken työn tässä pienessä ohjelmassa: se tulostaa tekstiä näytölle. Tässä on kolme tärkeää yksityiskohtaa.
Ensinnäkin println! kutsuu Rust-makroa. Jos se olisi kutsunut funktiota, se kirjoitettaisiin
println (ilman !-merkkiä). Rust-makrot ovat tapa kirjoittaa koodia, joka generoi koodia
laajentaakseen Rustin syntaksia, ja käsittelemme niitä tarkemmin Luvussa 20.
Toistaiseksi sinun tarvitsee vain tietää, että !-merkin käyttö tarkoittaa, että kutsut makroa
tavallisen funktion sijaan ja että makrot eivät aina noudata samoja sääntöjä kuin funktiot.
Toiseksi näet merkkijonon "Hello, world!". Välitämme tämän merkkijonon argumenttina println!-makrolle,
ja merkkijono tulostetaan näytölle.
Kolmanneksi päätteemme rivin puolipisteellä (;), joka osoittaa, että tämä lauseke on ohi ja
seuraava on valmis alkamaan. Useimmat Rust-koodin rivit päättyvät puolipisteeseen.
Kääntäminen ja suorittaminen
Suoritit juuri juuri luomasi ohjelman, joten tarkastellaan prosessin jokaista vaihetta.
Ennen Rust-ohjelman suorittamista sinun on käännettävä se Rust-kääntäjällä kirjoittamalla rustc-komento
ja välittämällä sille lähdekooditiedostosi nimi, näin:
$ rustc main.rs
Jos sinulla on C- tai C++-tausta, huomaat, että tämä on samankaltaista kuin gcc tai clang.
Onnistuneen kääntämisen jälkeen Rust tuottaa binäärisen ajettavan tiedoston.
Linuxissa, macOS:ssä ja PowerShellissä Windowsilla näet ajettavan tiedoston kirjoittamalla ls-komennon
komentorivilläsi:
$ ls
main main.rs
Linuxissa ja macOS:ssä näet kaksi tiedostoa. PowerShellissä Windowsilla näet samat kolme tiedostoa kuin CMD:ssä. CMD:ssä Windowsilla kirjoittaisit seuraavan:
> dir /B %= the /B option says to only show the file names =%
main.exe
main.pdb
main.rs
Tämä näyttää lähdekooditiedoston .rs-päätteellä, ajettavan tiedoston (main.exe Windowsilla, mutta main kaikilla muilla alustoilla) ja Windowsilla käytettäessä tiedoston, joka sisältää virheenkorjaustietoja .pdb-päätteellä. Tästä eteenpäin suoritat main- tai main.exe-tiedoston näin:
$ ./main # or .\main on Windows
Jos main.rs on “Hello, world!” -ohjelmasi, tämä rivi tulostaa Hello, world! terminaaliisi.
Jos olet tottunut dynaamiseen kieleen, kuten Rubyyn, Pythoniin tai JavaScriptiin, et ehkä ole tottunut kääntämisen ja ohjelman suorittamisen erottamiseen eri vaiheiksi. Rust on etukäteen käännettävä kieli, mikä tarkoittaa, että voit kääntää ohjelman ja antaa ajettavan tiedoston jollekin toiselle, ja he voivat suorittaa sen vaikka heillä ei olisi Rustia asennettuna. Jos annat jollekulle .rb-, .py- tai .js-tiedoston, he tarvitsevat Ruby-, Python- tai JavaScript-toteutuksen asennettuna (vastaavasti). Mutta näissä kielissä tarvitset vain yhden komennon ohjelmasi kääntämiseen ja suorittamiseen. Kaikki on kompromissi kielen suunnittelussa.
Pelkkä kääntäminen rustc-kääntäjällä riittää yksinkertaisiin ohjelmiin, mutta projektisi kasvaessa
haluat hallita kaikkia vaihtoehtoja ja helpottaa koodisi jakamista. Seuraavaksi esittelemme sinulle
Cargo-työkalun, joka auttaa kirjoittamaan tosielämän Rust-ohjelmia.