In veel populaire programmeertalen, zoals C of JavaScript, zijn variabelen standaard veranderlijk. In Rust hebben de auteurs van de taal een belangrijke keuze gemaakt voor onveranderlijkheid van variabelen als standaard: deze beslissing is gerelateerd aan de veiligheid van de code en het verminderen van fouten die voortkomen uit onverwachte veranderingen in de staat van variabelen.
Het belangrijkste probleem van veranderlijke variabelen is de complexiteit van het debuggen en het opsporen van fouten die verband houden met impliciete waarde wijzigingen. Het is vooral moeilijk om het gedrag van de code te begrijpen wanneer variabelen op verschillende plekken in het programma veranderen en de controle over hun wijzigingen verloren gaat. Dit kan leiden tot bugs en onverwachte resultaten, vooral bij het schrijven van multithreaded applicaties of bij complexe onderlinge afhankelijkheden in de code.
In Rust zijn variabelen standaard onveranderlijk met behulp van het sleutelwoord let. Om een variabele veranderlijk te maken, moet je expliciet mut opgeven. Dit verhoogt de betrouwbaarheid van de code, maakt onveranderlijkheid een bewuste keuze en vermindert de kans op toevallige wijzigingen.
Voorbeeld code:
let x = 5; // onveranderlijke variabele let mut y = 10; // veranderlijke variabele y += 1; // correct x += 1; // compilatiefout!
Belangrijke kenmerken:
mut.Kan ik een veld van een structuur wijzigen als de structuurvariabele zelf als onveranderlijk is gedeclareerd?
Nee, als de structuurvariabele als onveranderlijk is gedeclareerd, zijn haar velden ook onveranderlijk. Om velden te wijzigen, moet de variabele als mut worden gedeclareerd.
Voorbeeld code:
struct Point { x: i32, y: i32 } let mut p = Point { x: 0, y: 0 }; p.x = 5; // ok let p2 = Point { x: 1, y: 2 }; p2.x = 3; // compilatiefout!
Als de variabele mut is, kan ik er dan tegelijkertijd meerdere veranderlijke verwijzingen naar hebben?
Nee, in Rust bestaat er maar één veranderlijke verwijzing naar een object tegelijk. Deze regel voorkomt dataconcurrentie.
Kan ik een array van onveranderlijke objecten als veranderlijk declareren en de inhoud ervan wijzigen?
Ja. Als de array-variabele als mut is gedeclareerd, kunnen zijn elementen worden gewijzigd, maar als de inhoud van het array-type onveranderlijk is, zijn de elementen onveranderlijk.
mut zonder noodzaak, wat de code minder veilig maakt.mut te declareren.In een project worden variabelen uit gewoonte als veranderlijk gedeclareerd, zelfs wanneer dat niet nodig is. Hierdoor wordt een van de variabelen per ongeluk veranderd in het midden van het programma door een andere methode, wat een moeilijk te vinden fout veroorzaakt in productie.
Voordelen:
Nadelen:
In een teamproject houden ze zich aan de regel: standaard zijn variabelen onveranderlijk, en veranderlijkheid wordt alleen gebruikt waar absoluut noodzakelijk, altijd met een verklaring over de reden.
Voordelen:
Nadelen: