Rust
- Johan Burell
Vad är det och vad gör det speciellt?
http://valte.ch/mejsla_rust
Funktionalitet
- Inga fler segmenteringfel
- Garanterad trådsäkerhet
- Funktionell stil (expressions, fria funktioner, ADT)
- Pragmatisk och kompakt syntax
- Ruskigt snabb
- (Ingen GC eller Runtime)
- Fungerar till allt mellan stora applikationer och IoT
Det här med minne...
Ägandeskap
- Minne binds till variabler
- Det får bara finnas en bindning åt gången per minne
- Variabler som faller ur scope, frigör sitt minne
Mutationer
- Alla variabler är omuterbara om inget annat anges
- Variabler som är omuterbara kan bindas om muterbart
- ...och sedan tillbaka till omuterbart om man vill
Låneregler
- Minne får lånas ut omuterbart hur många gånger som helst
- Om minne lånas ut muterbart får inga andra lån existera
- Lån får inte pågå längre än variabelns livslängd
Både lånereglerna och ägande-/mutationsreglerna kollas under kompilering och är gratis under körning(!)
Men trådar då?
- Variabler som skickas mellan trådar måste ha egenskapen "Send" (ex Arc)
- Variabler som delas mellan trådar måste ha egenskapen "Sync" (ex Mutex)
Inga andra variabler får passera trådbarriären (unsafe är det enda undantaget)
Ett första exempel

Alla beroenden i finns i prelude:
https://doc.rust-lang.org/stable/std/prelude/index.html
Varför ett '!' ? Vi kommer till det...
Mutationer

Mutationer

Mutationer


En titt på typer
Motsvarande f32 och f64 finns för flyttal

Heltal
En titt på typer (nummer)


En titt på typer (kastning)





En titt på typer (num forts)



En titt på typer (strängar)

En titt på typer (strängar)


Funktioner


Closures
- Fungerar likt closures i andra språk
- Som standard så lånar de omgivningen, men kan även ta över ägandeskapet



Lån


Lån, forts...

Box-returer istället...

Trådsäkerhet

Mer om typer


Mer om typer (Structs)


Mer om typer (Traits)


Funktionell stil


Funktionellt flöde


Felhantering med ADTs


Frågor?
(...och tack för er tid!)
Rust: En titt på språket
By burre83
Rust: En titt på språket
- 284