Rust (programmeringsspråk)

rust
Utvikler(e)
Rust-prosjektutviklere
https://www.rust-lang.org/ , https://www.rust-lang.org/zh-CN/ , https://www.rust-lang.org/zh-TW/ , https://www.rust-lang.org/ja/ , https://www.rust-lang.org/es/ , https://www.rust-lang.org/it/ , https:// www. .rust-lang.org/pt-BR/ , https://www.rust-lang.org/ru/ og https://www.rust-lang.org/tr/
Generell informasjon
Vanlige utvidelser .rs
Paradigme multiparadigme , imperativ , objektorientert , prosedyremessig , samtidig , funksjonell , kompilert , generelt formål
Dukket opp i 2010
Designet av Graydon Hoare
Siste stabile versjon 1.62.0 [ 1 ] ​( 30. juni 2022 (3 måneder og 19 dager))
type system statisk , sterk , utledet , strukturell
påvirket av Alef , C# , C++ , Camlp4 , Common Lisp , Cyclone , Erlang , Haskell , Hermes , Limbo , Napier , Napier88 , Newsqueak , NIL , Ruby , Sather , Standard ML , Ocaml , Racket , Swift
har påvirket C# , Elm , Idris , Swift
Operativsystem Linux , macOS , Windows , FreeBSD , OpenBSD , [ 2 ] Redox , Android , iOS [ 3 ]
Tillatelse Apache 2.0 -lisens eller MIT-lisens [ 4 ]

Rust er et kompilert , multiparadigme programmeringsspråk som utvikles av Rust Foundation . Det er et multi-paradigme programmeringsspråk som støtter ren funksjonell , prosedyremessig , imperativ og objektorientert programmering .

I henhold til Mozillas policy, [ 5 ] er Rust utviklet på en helt åpen måte og søker innspill og bidrag fra samfunnet. Utformingen av språket har blitt foredlet gjennom erfaringer med utvikling av Servo - nettlesermotoren [ 6 ] og selve Rust-kompilatoren. Selv om det er utviklet og sponset av Mozilla og Samsung, er det et fellesskapsprosjekt. En stor del av bidragene kommer fra medlemmer av fellesskapet. [ 7 ]

Innen 2020 er det et av de mest brukte programmeringsspråkene når det gjelder å jobbe med kryptovalutaer og lage noder for å utvinne kryptoaktiva. [ 8 ]

Beskrivelse

Rusts mål er å være et godt språk for å lage store klient- og server -side programmer som kjører på Internett. Dette har ført til et funksjonssett med vekt på sikkerhet, minneallokeringskontroll og samtidighet. Sikker kodeytelse forventes å være tregere enn C++ , hvis ytelse er den eneste vurderingen, men sammenlignet med C++-kode laget for å ta sammenlignbare forholdsregler som Rust gjør, kan sistnevnte være enda raskere. [ 9 ]

Rusts syntaks er lik C og C++, med parentesavgrensede blokker med kode og flytkontrollstrukturer som if, else, do, whileog for. Ikke alle C- og C++-strukturer er til stede, og andre (for eksempel nøkkelordet matchfor flerveis forgrening) vil være mindre kjent for programmerere som kommer fra disse språkene.

Systemet er designet for sikker minnetilgang, og tillater ikke null -pekere eller hengende pekere . [ 10 ]​ [ 11 ]​ Dataverdier kan bare initialiseres på et fast sett med måter, som krever at inngangene deres allerede er initialisert. [ 12 ]

Typesystemet støtter en mekanisme som ligner på typeklasser, kalt "trekk", direkte inspirert av Haskell -språket . Dette er et anlegg for polymorfisme som støtter ulike typer argumenter ( ad-hoc polymorfisme ), oppnådd ved å legge til restriksjoner for å skrive variabeldeklarasjoner. Andre Haskell -funksjoner , for eksempel høyere type polymorfisme , støttes ikke.

Rust har typen inferens , for variabler deklarert med let nøkkelordet. Slike variabler trenger ikke å initialiseres med en tilordnet verdi for å bestemme typen. På kompileringstidspunktet gir den en feil hvis en kodegren ikke klarer å tilordne en verdi til variabelen. [ 13 ]​ Funksjoner kan motta generiske parametere, men de må være uttrykkelig avgrenset av egenskaper , det er ingen måte å utelate typedeklarasjoner uten å forlate bruken av metodene og operatorene til parameterne.

Samtidig støttes gjennom enkle oppgaver, lik de som finnes i Erlang og andre aktørbaserte språk. I slike systemer kommuniserer oppgaver gjennom meldingsoverføring, i stedet for å dele data direkte. Av ytelsesgrunner er det mulig å sende data uten å kopiere ved å bruke enkeltbokser. Unike bokser har garantert kun én eier, og kan frigis av avsenderen for bruk av mottakeren.

Rusts objektsystem er basert på implementeringer, egenskaper og strukturerte typer. Implementeringer har en lignende funksjon som klasser på andre språk, og er definert med impl nøkkelordet. Arv og polymorfisme er gitt av egenskaper , de lar metoder defineres og blandes i implementeringer. Strukturerte typer brukes til å definere felt. Implementeringer og egenskaper kan ikke definere sine egne felt, og bare egenskaper gir arv, for å unngå C++ diamantproblemet .

Historie

Språket vokste ut av et personlig prosjekt startet i 2006 av Mozilla-ansatt Graydon Hoare, [ 14 ] som hevdet at prosjektet muligens var oppkalt etter rustfamilien av sopp. [ 15 ] Mozilla begynte å sponse prosjektet i 2009 [ 14 ] og kunngjorde det i 2010. [ 16 ] [ 17 ] Samme år flyttet arbeidet fra den første kompilatoren (skrevet i OCaml) til den selv-hostede kompilatoren skrevet i Rust. [ 18 ] Kalt rustc, den ble vellykket kompilert i 2011. [ 19 ] rustc bruker LLVM som bakenden.

Den første nummererte pre-alfa-versjonen av Rust-kompilatoren ble produsert i januar 2012. [ 20 ] Rust 1.0, den første stabile versjonen, ble utgitt 15. mai 2015. [ 21 ] [ 22 ] Etter 1.0 leveres stabile punktutgivelser hver sjette uke, mens funksjoner utvikles i Rust hver kveld og deretter testes med alfa- og beta-utgivelser som varer i seks uker. [ 23 ]

Sammen med konvensjonell statisk skriving, støttet Rust også typetilstander før versjon 0.4. Typestate-systemet modellerer påstander før og etter programsetninger, ved bruk av en spesiell sjekkerklæring. Avvik kan oppdages på kompileringstidspunktet, i stedet for når et program kjøres, som kan være tilfellet med påstander i C- eller C++-kode. Typestate-konseptet var ikke unikt for Rust, da det først ble introdusert på NIL-språket. [ 24 ] Typestates ble fjernet fordi de sjelden ble brukt i praksis, selv om den samme funksjonen fortsatt kan oppnås med et markup-mønster. [ 25 ]

Stilen til objektsystemet endret seg betydelig i Rust-versjonene 0.2, 0.3 og 0.4. Versjon 0.2 introduserte klasser for første gang, og versjon 0.3 la til flere funksjoner, inkludert destruktorer og polymorfisme gjennom bruk av grensesnitt. I Rust 0.4 ble egenskaper lagt til som et middel for å gi arv; grensesnitt ble forent med egenskaper og fjernet som en egen funksjon. Klasser ble også fjernet, erstattet av en kombinasjon av implementeringer og strukturerte typer.

Starter i Rust 0.9 og slutter i Rust 0.11, Rust hadde to typer innebygde pekere: ~ og @, noe som forenkler kjerneminnemodellen. Reimplementerte disse pekertypene i standardbiblioteket som Boxy (nå fjernet) Gc.

I januar 2014, før den første stabile utgivelsen, Rust 1.0, kommenterte Dr. Dobbs sjefredaktør Andrew Binstock Rusts sjanser til å bli en konkurrent til C++ og de andre kommende D-språkene, Go og Nim (den gang Nimrod). I følge Binstock, mens Rust ble "utbredt sett på som et bemerkelsesverdig elegant språk", ble adopsjonen redusert fordi den gjentatte ganger byttet mellom versjoner. [ 26 ]

Rust var det tredje mest elskede programmeringsspråket i 2015 Stack Overflow årlige undersøkelse [ 27 ] og rangert først i 2016-2020. [ 28 ]​ [ 29 ]​ [ 30 ]​ [ 31 ]​ [ 32 ]

Språket er nevnt i The Mozilla Book som "rustent metall". [ 33 ]

Opprettelse av Rust Foundation

I august 2020 permitterte Mozilla 250 av sine 1000 ansatte over hele verden som en del av en bedriftsrestrukturering utløst av den langsiktige virkningen av COVID-19-pandemien. Teamet bak Servo , en nettlesermotor skrevet i Rust, er fullstendig oppløst. Arrangementet vakte bekymring for fremtiden til Rust, ettersom noen teammedlemmer var aktive Rust-bidragsytere.

Uken etter anerkjente Rusts kjerneteam den alvorlige virkningen av permitteringene og kunngjorde at planene for en Rust-stiftelse var i gang. Stiftelsens første mål vil være å ta eierskap til alle varemerker og domenenavn, og påta seg økonomisk ansvar for kostnadene deres. [ 34 ]

8. februar 2021 kunngjorde de fem grunnleggerne ( AWS , Huawei , Google , Microsoft og Mozilla) dannelsen av Rust Foundation. [ 35 ]​ [ 36 ]

6. april 2021 annonserte Google støtte for Rust i Android Open Source Project som et alternativ til C/C++. [ 37 ]


Eksempler

Følgende kode er gyldig for Rust 0.8. I senere versjoner kan du endre syntaks eller funksjoner.

Program som viser uttrykket "Hallo, verden!":

fn main () { println! ( "Hei verden!" ); }

To versjoner av den faktorielle funksjonen , i rekursiv og iterativ stil :

/* Grenene i denne funksjonen viser Rusts valgfrie implisitte returverdier , som kan brukes når en mer "funksjonell" stil er foretrukket. I motsetning til C++ og andre lignende språk, er `hvis`-kontrollstrukturen et uttrykk snarere enn en erklæring, og har dermed en egen returverdi. */ fn rekursiv_faktoriell ( n : i32 ) -> i32 { hvis n == 0 { 1 } annet { n * rekursiv_faktoriell ( n - 1 ) } } fn iterative_factorial ( n : i32 ) -> i32 { // Variabler er deklarert med `let`. // Nøkkelordet `mut` lar variabler muteres. la mut i = 1 ; la mut resultat = 1 ; mens jeg <= n { resultat *= i ; i += 1 ; } returnere resultat ; // En eksplisitt retur, i motsetning til forrige funksjon. } fn main () { println! ( "Rekursivt resultat: {:i}" , rekursiv_faktor ( 10 )); println! ( "Iterativt resultat: {:i}" , iterative_factorial ( 10 )); }

En enkel demonstrasjon av Rusts lette samtidighetsegenskaper :

/* Denne funksjonen lager ti "oppgaver" som kan utføres samtidig. Kjør den flere ganger og legg merke til den taggete utgangen når hver oppgave kaller stdout, siden hver oppgave kan forekomme mellom påfølgende `println`-kall og innenfor selve `println`-funksjonen. */ fn main () { // Denne strengen er uforanderlig, så den kan trygt nås // av flere oppgaver. let message = "Se på meg, jeg er en lett prosess!" ; // `for`-løkker fungerer med alle typer som implementerer // `Iterator`-trekket. for num i området ( 0 , 10 ) { do spawn { println ( melding ); // `println!` er en makro som statisk kontrollerer en formatstreng. Makroer er strukturelle (som i Scheme) i stedet for at // er tekstuelle (som i C). println! ( "Denne meldingen ble tilbudt av oppgaven {:i}." , num ); } } }

Språkevolusjon

I tillegg til de konvensjonelle statiske typene, inkluderte Rust også typetilstander opp til versjon 0.4. Typestate -systemet modellerer setninger før og etter programsetninger, ved bruk av en spesiell sjekkerklæring . Avvik kan oppdages under kompilering, i stedet for etter at programmet er kjørt, som kan være tilfellet med påstander i C- eller C++-kode. Typestate- konseptet er ikke unikt for Rust, da det først ble introdusert i NIL-programmeringsspråket. [ 24 ] Typestates ble fjernet fordi de i praksis ble funnet å være lite brukt, men den samme funksjonaliteten kan fortsatt oppnås med mønstrene til samme språk. [ 38 ]

Stilen til objektsystemet har endret seg betydelig i Rust-versjonene 0.2, 0.3 og 0.4. Versjon 0.2 introduserte klasser for første gang, med versjon 0.3 som la til en rekke funksjoner, inkludert destruktorer og polymorfisme gjennom bruk av grensesnitt. I Rust 0.4 ble egenskaper lagt til som et middel for å gi arv, grensesnitt ble forent med egenskaper og fjernet som en frittstående funksjon. Klasser ble også fjernet, erstattet av en kombinasjon av implementeringer og strukturerte typer.

Grafiske brukergrensesnitt (GUI)

Rust tillater opprettelsen av grafiske grensesnitt gjennom de opprinnelige APIene til vertsplattformen, takket være dens lavnivåspråkegenskaper. Imidlertid kan denne utviklingsveien føre til vanskeligheter i prosjekter som vurderer opptak av flere plattformer. [ 39 ]

For tiden er det flere utviklinger for å lage GUI-er i Rust, noen tillater opprettelse av grensesnittet sammen med Electron eller ved å bruke HTML, noen andre gir innfødte biblioteker for språket, men de er fortsatt i en umoden tilstand av utvikling. Til slutt er det prosjektene som kobler kjente biblioteker med større modenhet i utviklingen, som GTK eller Qt , som tillater utvikling på tvers av plattformer. [ 40 ] Noen populære prosjekter er følgende:

gtk-rs

Det er en implementering av GTK 3 -bibliotekene for bruk med Rust-språket. For å gjøre dette oppretter den Rust-funksjoner som overlapper funksjonene til GTK -bibliotekene i C, ved å bruke Foreign Function Interface som Rust tilbyr.

conrod

Lavt nivå bibliotek som gjør bruk av OpenGL eller Vulkan.

Prosjekter

Nettleser

En nettleser og forskjellige relaterte komponenter blir skrevet i Rust, inkludert:

  • firefox
    • Servo: Mozillas parallelle nettlesermotor utviklet i samarbeid med Samsung
    • Quantum – Et prosjekt, som består av flere delprosjekter, for å forbedre Firefoxs Gecko nettlesermotor, utviklet av Mozilla

Operativsystemer

Mange operativsystemer (OS) og relaterte komponenter blir skrevet i Rust. Fra januar 2019 inkluderte operativsystemer: BlogOS, intermezzOS, QuiltOS, Redox, RustOS, Rux, Tefflin og Tock.

  • Redoks: En mikrokjerne
  • Stratis: Et filsystem for Fedora og RHEL 8.

Annet

  • exa - en moderne erstatning for ls.
  • Microsoft Azure IoT Edge - En plattform som brukes til å kjøre Azure-tjenester og kunstig intelligens på IoT-enheter har komponenter implementert i Rust
  • OpenDNS  – brukes i to av komponentene
  • Tor  – et anonymitetsnettverk, opprinnelig skrevet i C, eksperimenterer med å migrere til Rust for sikkerhetsfunksjonene
  • TiKV – En distribuert nøkkelverdidatabase først utviklet av PingCAP, nå et medlemsprosjekt av Cloud Native Computing Foundation
  • Xi - En tekstredigerer av Raph Levien, brukt i Fuchsia-operativsystemet.
  • Deno – En sikker JavaScript- og TypeScript-kjøringstid bygget med V8, Rust og Tokyo
  • Linkerd 2.x: Et «service mesh»-verktøy for overvåking av mikrotjenester er stort sett skrevet i Rust.
  • TerminusDB - datastruktur design og layout
  • Discord  – Chat-tjeneste rettet mot spillere som bruker Rust for deler av sin backend, samt videokoding på klientsiden.
  • rav1e – En eksperimentell AV1-videoformatkoder.

Historie om publiserte versjoner

  • 0,1; 0, 1.6.0, 1.7.0, 1.8.0, 1.9.0, 1.10.0, 1.11.0, 1.12.0, 1.12.1, 1.13.0, 1.14.0, 1.15.0, 1.15.1, 1.16.0, 1.17.0, 1.18.0, 1.19.0, 1.20.0, 1.21.0, 1.22.0, 1.22.1, 1.23.0, 1.24.0, 1.24.1, 1.25.0, 0, 1.26.1, 1.26.2, 1.27.0, 1.27.1, 1.27.2, 1.28.0, 1.29.0, 1.29.1, 1.29.2, 1.30.0, 1.30.1, 1.31. 1.31.1, 1.32.0, 1.33.0, 1.34.0, 1.34.1, 1.34.2, 1.35.0, 1.36.0, 1.37.0, 1.38.0, 1.39.0, 1.40.0, 0, 1.41.1, 1.42.0, 1.43.0, 1.43.1, 1.44.0, 1.44.1, 1.45.0, 1.45.1, 1.45.2, 1.46.0, 1.47.0, 1.48. 1.49.0, 1.50.0, 1.51.0, 1.52.0, 1.52.1, 1.53.0, 1.54.0, 1.55.0, 1.56.0, 1.56.1, 1.57.0, 1.58.0, 1, 1.59.0, 1.60.0, 1.61.0, 1.62.0, 1.62.1, 1.63.0 og 1.64.0

Se også

Referanser

  1. https://blog.rust-lang.org
  2. "OpenBSD-porter" . Hentet 3. april 2018 . 
  3. "Bygge og distribuere et Rust-bibliotek på iOS" . 6. september 2017 . Hentet 11. januar 2019 . 
  4. «COPYRIGHT» . Rust kompilator kildelager . Hentet 17. desember 2012 . 
  5. ^ "Mozilla-manifestet" . Hentet 9. april 2012 . 
  6. Peter Bright (3. april 2013). "Samsung slår seg sammen med Mozilla for å bygge nettlesermotor for flerkjernemaskiner" . Hentet 4. april 2013 . 
  7. ^ "Rustbidragsytere" . 
  8. "Programmeringsspråk for Bitcoins: Utviklere snakker." . 
  9. Walton, Patrick (5. desember 2010). "C++ designmål i sammenheng med rust" . Hentet 2011-01-21 . «... Det er umulig å være «så rask som C» i alle tilfeller mens du forblir trygg... C++ tillater alle slags triks på lavt nivå, for det meste involverer å omgå typesystemet, som tilbyr praktisk talt ubegrensede muligheter for optimalisering. I praksis begrenser C++-programmerere seg imidlertid til noen få verktøy for det store flertallet av koden de skriver, inkludert stabelallokerte variabler som eies av én funksjon og sendes av aliaser, unikt eide objekter (ofte brukt med auto_ptreller C++0x). unique_ptr), og referansetelling via shared_ptreller COM. Et av målene med Rusts typesystem er å støtte disse mønstrene akkurat som C++ gjør, men å håndheve sikker bruk. På denne måten er målet å være konkurransedyktig med de aller fleste idiomatiske C++ i ytelse, samtidig som de forblir minnesikker... ». 
  10. Rosenblatt, Seth (3. april 2013). "Samsung blir med på Mozillas søken etter rust" . Hentet 5. april 2013 . «[Brendan Eich] bemerket at hvert år blir nettlesere ofre for hacking i den årlige Pwn2Own-konkurransen på CanSecWest-konferansen. "There's no free memory reads" i Rust, sa han, men det er i C++. Disse problemene "fører til mange nettlesersårbarheter" og vil bli løst av Rust, som er et selvkompilerende språk. » 
  11. Brown, Neil (17. april 2013). "En smak av rust" . Hentet 25. april 2013 . «... Andre mer komplekse datastrukturer kan klart implementeres for å tillate større nivåer av deling, samtidig som man sørger for at grensesnittet kun består av eide og administrerte referanser, og dermed er trygt fra uplanlagt samtidig tilgang og fra dinglende pekerfeil. » 
  12. ^ "Vanlige spørsmål om dokumentspråk" . 14. september 2010 . Hentet 11. januar 2012 . 
  13. Walton, Patrick (1. oktober 2010). "Rust Features I: Type Inference" . Hentet 2011-01-21 . 
  14. a b Rust Team (9. juni 2016). "Rustprosjektet" . rust-lang (på engelsk) . Arkivert fra originalen 9. juni 2016 . Hentet 27. juni 2019 . 
  15. ^ kibwen (7. juni 2014). "Internettarkeologi: den definitive kilden til hvorfor Rust heter " Rust " . reddit (på engelsk) . Hentet 17. september 2019 . 
  16. Brendan Eich (29. april 2011). «Fremtid» . slideshare (på engelsk) . Hentet 18. september 2020 . 
  17. Mozilla Team (29. april 2011). "Prosjekt Servos" (PDF) . kom (på engelsk) . Hentet 7. juli 2010 . 
  18. Graydon (2. oktober 2010). Rustfremgang . Graydons arbeid på Mozilla . Arkivert fra originalen 15. august 2014 . Hentet 30. oktober 2010 . 
  19. Hoare, Graydon (20. april 2011), " rust-dev stage1 rustc builds " (på no) , rust-dev e-postliste , https://mail.mozilla.org/pipermail/rust-dev/2011- April/ 000330.html , hentet 18. september 2020 . 
  20. katamorfisme (20. januar 2012). "Mozilla og Rust-fellesskapet gir ut Rust 0.1 (et sterkt skrevet systemprogrammeringsspråk med fokus på minnesikkerhet og samtidighet)" . reddit (på engelsk) . Hentet 18. september 2020 . 
  21. Rust Team (20. januar 2012). "rust/RELEASES.md" . github (på engelsk) . Hentet 18. september 2020 . 
  22. Rust Team (15. mai 2015). "Kunngjør Rust 1.0" . Rustblogg . _ Hentet 18. september 2020 . 
  23. Rust Team (12. desember 2014). "Rust 1.0: Planlegging av togene" . Rustblogg . _ Hentet 18. september 2020 . 
  24. ^ ab Strøm , Robert E.; Yemini, Shaula (1986). Typestate: Et programmeringsspråkkonsept for å forbedre programvarepålitelighet . IEEE-transaksjoner på programvareteknikk. ISSN  0098-5589 . Hentet 14. november 2010 . 
  25. pc walton (26. desember 2012). "Typestate er død, lenge leve typestate!" . pcwalton (på engelsk) . Hentet 18. september 2020 . 
  26. ^  
  27. ^ Stackoverflow Team (2015). "Utviklerundersøkelse 2015" . stackoverflow _ _ Hentet 18. september 2020 . 
  28. stackoverflow-teamet (2016). "Mest elsket, fryktet og ønsket" . stackoverflow _ _ Hentet 18. september 2020 . 
  29. stackoverflow-teamet (2017). "Mest elsket, fryktet og ønsket" . stackoverflow _ _ Hentet 18. september 2020 . 
  30. stackoverflowTeam (2018). "Utviklerundersøkelsesresultater 2018" . stackoverflow _ _ Hentet 18. september 2020 . 
  31. stackoverflowTeam (2019). "Mest elsket, fryktet og ønsket" . stackoverflow _ _ Hentet 18. september 2020 . 
  32. stackoverflow-teamet (27. mai 2020). «Resultatene fra utviklerundersøkelsen for 2020 er her!» . stackoverflow _ _ Hentet 18. september 2020 . 
  33. MozillaTeam (2020). "The Book of Mozilla" . mozilla (på engelsk) . Hentet 18. september 2020 . «Udyret tok i bruk nye klær og studerte måtene tid og rom og lys og strømningen av energi gjennom universet. Fra studiene sine skapte Beast nye strukturer av oksidert metall og forkynte deres herligheter. Og Dyrets tilhengere gledet seg og fant en fornyet hensikt med denne læren. » 
  34. ^ "Legge grunnlaget for Rusts fremtid" . RustBlogg . 18. august 2020. Arkivert fra originalen 2. desember 2020 . Hentet 2. desember 2020 . Ukjent parameter ignorert ( hjelp )  |url-status=
  35. "Hei verden!" . Rust Foundation . 8. februar 2020. Arkivert fra originalen 19. april 2022 . Hentet 4. juni 2022 . Ukjent parameter ignorert ( hjelp )  |url-status=
  36. ^ "Mozilla ønsker Rust Foundation velkommen" . Mozilla-blogg (på amerikansk engelsk) . 9. februar 2021. Arkivert fra originalen 8. februar 2021 . Hentet 9. februar 2021 . Ukjent parameter ignorert ( hjelp )  |url-status=
  37. ^ Amadeo, Ron (7. april 2021). "Google skriver nå Android-kode på lavt nivå i Rust" . Ars Technica (på amerikansk engelsk) . Arkivert fra originalen 8. april 2021 . Hentet 8. april 2021 . Ukjent parameter ignorert ( hjelp )  |url-status=
  38. "Typestate er død, lenge leve typestate!" . 26. desember 2012. Arkivert fra originalen 31. desember 2012 . Hentet 28. desember 2012 . 
  39. ^ areweguiyet (2020). "Er vi GUI ennå?" . areweguiyet (på engelsk) . Hentet 19. september 2020 . 
  40. Amann, Marco (7. februar 2020). "GUI-programmering med Rust" . medium (på engelsk) . Hentet 19. september 2020 . 
Siter feil: Tag <ref>definert i <references>kalt "lambda rust" brukes ikke i tidligere tekst.

Eksterne lenker