We will find a way, we always have.

-interstellar

Programming Language/러스트

[Rust] 러스트에게 반한 점, immutable & mutable 변수

Redddy 2024. 11. 21. 21:46

러스트에선 let 이라는 키워드를 사용하여 변수를 선언한다. 

 

 

 

기본적으로 타입 추론을 해주고, 타입을 명시할 수도 있다. 

 

러스트는 상당히 많은 타입 종류를 가지고 있는데, 이건 다음번에 이야기 해보도록 하고 이 글에서 이야기 하고 싶은 것은 immutable과 mutable이다. 

 

자바를 사용하면서 이런글까지 쓸 정도로 final을 숨 쉬듯 써왔다. 로컬 변수, 파라미터, 필드 등등 붙일 수 있는 변수들에는 전부 final을 붙여왔었는데, 붙이면서도 애매했던 점은 사실 final을 붙여도 불변은 아니라는 것이였다. 재할당은 막을 수 있지만, 그 값 안의 있는 값들이 변경되는 것은 막을 수 없었다. 

 

뿐만 아니라 final을 붙여도 값이 추가되는 것을 막을 순 없다.

 

 

위 코드는 문제없이 잘 돌아간다. (물론 List.of()로 생성하면 UnsupportedOperationException 에러가 발생하기는 하지만 그건 final을 붙이지 않아도 발생한다.)

 

 

하지만 러스트에선 immutable 한 녀석은 값이 추가되는 것을 허용하지 않는다. 

 

mut을 사용하라고 친절하게 알려준다.  (vec은 배열같은 녀석이다)

 

mut을 붙여주면 야무지게 돌아가는 것을 확인 할 수 있다. 

 

 

 

여기에서 러스트에게 한번 반했다. 

 

https://github.com/cat-milk/Anime-Girls-Holding-Programming-Books/blob/master/Rust/Minagi_Koharu_Reading_Rust_Programming_Language.png

 

'Programming Language > 러스트' 카테고리의 다른 글

[Rust] 러스트의 꽃, 소유권  (0) 2024.11.22
[Rust] 러스트에서 이분탐색  (0) 2024.11.11