**Rust** programazio-lengoaia konpilatu bat da, xede orokorrekoa eta paradigma anitzekoa, eta Rust Fundazioaren eskutik garatzen ari dena. Programazio-lengoaia multiparadigmatikoa izanik, programazio funtzional purua onartzen du, baita inperatiboa eta objektuetara bideratua ere.

Mozillaren politikari jarraituz, Rust modu irekian garatzen da eta komunitatearen iritziak eta ekarpenak sustatzen ditu. Lengoaiaren diseinua hobetuz joan da Servo nabigatzailearen motorra garatu ahala, baita Rust-en konpiladorearen garapenean metatutako esperientzian oinarrituta. Mozillak eta Samsung-ek garatu eta babesten badute ere, proiektu komunitarioa da. Kontribuzio gehienak komunitateko kideenak dira.

Helburua C eta C++-ren ezaugarriekin baina segurtasun arazoak konpontzen dituen lengoaia bat sortzea izan zen. Horregatik, sistema eragileen garatzaileen interesa ere piztu du. Linuxeko *kernel*ean laster integratuko dutela esan du Linus Torlvaldsek.

Deskribapena
------------

Rust lengoaiaren helburua da Interneteko bezero zein zerbitzarietako programa handiak sortzeko lengoaia egokia izatea. Horri begira ezaugarri multzo bat definitu da, garrantzia berezia emanez segurtasunari, memoriaren banaketaren kontrolari eta konkurrentziari. Kode seguruaren errendimendua C++ lengoaiaren bidezkoarena baino motelagoa izan daiteke, baina C++ kodea egokituz gero Rust-ek hartzen dituen segurtasuneko neurriak har ditzan, Rust azkarrago ere izan dezake.

Rust-aren sintaxia Cren eta C++-en antzekoa da: giltzek mugatzen dituzte kode-blokeak, eta `if, else,` `do`, `while` eta `for` egiturak erabiltzen dira fluxu-kontrolerako. C eta C++-en egitura guztiak ez dira onartzen, eta beste batzuk, baldintza anitzeko adarkatzerako `match` gakoa esaterako, ez dira hain familiarrak izango lengoaia haietako programatzaileentzat.

Memoriarako atzipen segurua izateko diseinatuta dago, eta ez du onartzen erakusle nulurik edo erakusle esekirik. Datuen balioak balio-multzo finko baten bidez baino ezin dira hasieratu, eta beti hasieratuta egon behar dute.

Datu-moten aldetik "traits" izeneko klaseak onartzen ditu, Haskell lengoaian zuzenean oinarrituta. Poliformismo berezia onartzen du (*ad-hoc polimorfismoa*), non aldagaien erazagupenean murriztapenak erants daitezkeen. Haskellen beste ezaugarri batzuk, mota desberdineko polimorfismoa (*higher-kinded*) barne, ez dira onartzen.

Historia
--------

Rust-en erabiltzaileek (k)rustazeo izena erabiltzen dute haien burua dfinitzeko, eta Ferris maskota ikur gisa.
Graydon Hoare Mozillako langileak 2006an hasitako proiektu pertsonal batetik sortu zen lengoaia. 2009an Mozilla hasi zen proiektua babesten eta 2010ean iragarri zuen. Rust-en konpiladorearen alfa aurreko lehen bertsio zenbakitua 2012ko urtarrilean sortu zen, eta Rust 1.0 egonkorra 2015eko maiatzaren 15ean. Ondoren, sei astean behin bertsio berriak agertzen dira. 

Rust hirugarren lengoaia maitatuena izan zen Stack Overflow-en 2015eko urteko inkestan, eta lehena 2016-2020 tartean. 

2020rako, programazio-lengoaia erabilienetako bat da kriptodiruaren arloan, bereziki meatze-lanetarako.

Sintaxia eta semantika
----------------------

### *Kaixo mundua* programa

Kaixo mundua da lengoaien sintaxia adierazteko erabili ohi den lehen adibidea.

```
fn main() {
    println!("Kaixo mundua!");
}
```

### Kode-blokeak eta egiturak

```
fn main() {
    let mut values = vec![1, 2, 3, 4];

    for value in &values {
        println!("balioak = {}", value);
    }

    if values.len() > 5 {
        println!("Zerrendak bost osagai baino gehiago ditu");
    }

    // Pattern matching
    match values.len() {
        0 => println!("Hutsa"),
        1 => println!("Balio bat"),
        2..=10 => println!("Bi eta hamar balioen artean"),
        _ => println!("Balio asko"),
    };

    // while gakoa begiztarako eta let gakoa pattern matching-erako
    while let Some(value) = values.pop() {
        println!("value = {value}"); // giltzak erabiltzen dira aldagai lokalak formateatzeko    }
}
```

Erreferentziak
--------------

1. ↑    *The Mozilla Manifesto.* .
2. ↑   Peter Bright.  (3 de abril de 2013). *Samsung teams up with Mozilla to build browser engine for multicore machines.* .
3. ↑    *Rust Contributors.* .
4. ↑    González, Diego Germán; González, Diego Germán.  (2022-12-10). «Zer da Rust eta nola erabili Linux-en» *Linux Adictos* (Noiz kontsultatua: 2022-12-15).
5. ↑   **(Ingelesez)** «Linus Torvalds: Rust For The Kernel Could Possibly Be Merged For Linux 5.20» *www.phoronix.com* (Noiz kontsultatua: 2022-12-15).
6. ↑   Walton, Patrick.  (5 de diciembre de 2010). *C++ Design Goals in the Context of Rust.* .
7. ↑   Rosenblatt, Seth.  (3 de abril de 2013). *Samsung joins Mozilla's quest for Rust.* .
8. ↑   Brown, Neil.  (17 de abril de 2013). *A taste of Rust.* .
9. ↑    *Doc language FAQ.*  14 de septiembre de 2010.
10. ↑    *Lenguajes de programacion para Bitcoins: Hablan los desarrolladores..* .

Kanpo estekak
-------------

|  |  |
| --- | --- |
| Autoritate kontrola | 
* **Wikimedia proiektuak**
* Wd Datuak: Q575650
* Commonscat Multimedia: Rust (programming language)

---

* **Identifikadoreak**
* GND: 1078438080
* LCCN: sh2018000672

 |

* Wd Datuak: Q575650
* Commonscat Multimedia: Rust (programming language)