Rust-Opas osa1 - Funktiot

vähemmän kuin 1 minuutti

Funktioilla voit käyttää koodia kirjoittamatta sitä uudestaan.

Puhtaat funktiot

Tässä esimerkkifunktio. Tämä funktio ottaa kaksi kokonumeroa ja palauttaa niiden summan. Tämä on esimerkki “puhtaasta” funktiosta. Sillä ei ole sivuvaikutuksia.

src/functions.rs:

pub fn add(x: i32, y: i32) -> i32 {
    x + y
}

i32 = 32-bittinen kokonumero

src/main.rs:

mod functions; // Tuo koodia functions.rs tiedostosta

fn main() {
    println!("{}", functions::add(1, 2));
}
$ cargo run
3

Epäpuhtaat funktiot

Tämä funktio ottaa kokonumeroreferenssin ja muuttaa sitä. Funktio muuttaa siis olemassa olevaa muuttujaa.

src/funtions.rs:

pub fn add1ToNumber(x: &mut i32) {
    *x += 1;
}

& = referenssi
mut = muutettavissa

src/main.rs:

mod functions;

fn main() {
    let mut n = 1;
    println!("Original: {}", n);
    functions::add1ToNumber(&mut n);
    println!("Changed:  {}", n);
}
$ cargo run
Original: 1
Changed:  2

Palauttaminen

Funktiosta voi palauttaa arvon return sanalla. Vaihtoehtoisesti funktion viimeinen arvo palautetaan jos sitä ei seuraa puolipiste (katso ylhäältä). jos return sanan jälkeen ei seuraa arvoa, () (ei mitään) on palautettu. Näin käy myös jos funktio ei omaa viimeistä arvoa.

&str = Merkkijonokonstantti

fn my_func() -> &str {
    return "hello";
    println!("Hi"); // Ei suoritettu
}