# Rust (llenguatge de programació)

Rust és un llenguatge de programació de sistemes multi-paradigma estàtic. Està dissenyat amb garanties de seguretat, això ho aconsegueix gràcies a un seguit de regles que el compilador comprova amb el borrow checker, gràcies a aquestes garanties es pot escriure codi segur i concurrent sense por.
Igual que C++, no fa servir recollida de memòria brossa.
Rust és software de codi obert amb doble llicència (Apache License 2.0 i MIT).
A més de ser segur, també és molt ràpid, comparable amb C i C++.
Rust ha estat el llenguatge de programació "més estimat" segons l'enquesta de Stack Overflow des del 2016.

## Història

Rust va ser concebut per Graydon Hoare amb el suport de l'empresa Mozilla l'any 2006.
L'any 2019 va ser el primer any de pèrdues econòmiques per a la Fundació Mozilla, comportant l'abandó de molts dels seus projectes i el 2020 gran quantitat de treballadors foren acomiadats, entre ells, molts desenvolupadors de Rust.
El febrer de 2021 va nàixer la Rust Foundation, una entitat sense ànim de lucre que porta per lema "el bon programari és creat per persones alegres i ben ajudades". Entre les empreses que donen suport econòmic a la Rust Fundation hi ha la mateixa Mozilla, Amazon Web Services, Google, Huawei o Microsoft.

## Característiques
### Seguretat en la gestió de memòria

Rust està dissenyat per ser segur quant a la gestió de memòria, no permet valors nuls, punters que apunten a memòria retornada al sistema, data races.
Aquesta seguretat l'aconsegueix analitzant el codi en temps de compilació, gràcies a les regles del borrow checker, les quals algunes estan demostrades formalment.
Té una sintaxi similar a C++, però la majoria d'elements són expressions, inclús els operadors de control de flux.
En comptes de classes té estructures, similar al struct de C, aquestes estructures poden implementar interfícies abstractes mitjançant els traits.
Les macros en rust treballen en AST directament, on en C++ el preprocessador actua sobre text.
Aquest petit programa pinta la tira "Hello, world!" a la sortida estàndard:
Operacions amb vectors (arrays) :
Exemple dels lifetimes en Rust:

## Referències

* ↑ «Foreword - The Rust Programming Language». [Consulta: 1r febrer 2021].
* ↑ «What is Ownership? - The Rust Programming Language». [Consulta: 1r febrer 2021].
* ↑ «Fearless Concurrency - The Rust Programming Language». [Consulta: 1r febrer 2021].
* ↑ «rust-lang/rust», 01-02-2021. [Consulta: 1r febrer 2021].
* ↑ «rust-lang/rust» (en anglès). [Consulta: 1r febrer 2021].
* ↑ «Rust vs C gcc - Which programs are fastest? | Computer Language Benchmarks Game». [Consulta: 1r febrer 2021].
* ↑ «Rust vs C++ g++ - Which programs are fastest? | Computer Language Benchmarks Game». [Consulta: 1r febrer 2021].
* ↑ «Stack Overflow Developer Survey 2020». [Consulta: 1r febrer 2021].
* ↑ «Rust Documentation · The Rust Programming Language» (en anglès). https://www.rust-lang.org.+[Consulta: 9 octubre 2017].
* ↑ «The Rust programming language» (en anglès). https://developer.mozilla.org. Arxivat de l'original el 2017-10-09. [Consulta: 9 octubre 2017].
* ↑ «How Rust Compares to Other Programming Languages - The New Stack» (en anglès). The New Stack, 02-05-2016.
* ↑ Pomeyrol, J. «Mozilla se deshace de Servo, le pasa el muerto a The Linux Foundation» (en castellà). Muy Linux, 17-11-2020. [Consulta: 24 febrer 2021].
* ↑ «Rust Foundation» (en anglès). [Consulta: 16 setembre 2021].
* ↑ Pomeyrol, J. «La Rust Foundation toma forma y recaba sus primeros patrocinadores» (en castellà). Muy Linux, 18-02-2021. [Consulta: 24 febrer 2021].
* ↑ «What is Ownership? - The Rust Programming Language». [Consulta: 16 setembre 2021].
* ↑ Jung, Ralf; Dang, Hoang-Hai; Kang, Jeehoon; Dreyer, Derek «Stacked borrows: an aliasing model for Rust». Proceedings of the ACM on Programming Languages, 4, POPL, 20-12-2019, pàg. 41:1–41:32. DOI: 10.1145/3371109.
* ↑ «Generic Types, Traits, and Lifetimes - The Rust Programming Language». [Consulta: 16 setembre 2021].
* ↑ «Macros - The Rust Programming Language». [Consulta: 16 setembre 2021].