Rust (programazio-lengoaia)

**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 
thumb|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 
## Kanpo estekak