🦀 Rust
[Rust 입문] 3. 제어문
date
Mar 23, 2023
slug
rust-ctrl-statement
author
status
Public
tags
Rust
독학
summary
Rust의 if - else, for, loop 에 대한 설명입니다.
type
Post
thumbnail
category
🦀 Rust
updatedAt
Mar 23, 2023 11:18 AM
if - else
rust의 if - else문은 일반적인 다른 언어들과 유사하게 동작한다. 하지만 rust에선 조건문에 소괄호를 씌우지 않으며 if - else 자체로 표현식이 될 수 있다는 특징이 있다. 그래서 결과를 변수에 바로 대입이 가능하다.
fn main() { let val = 10; if val % 2 == 0 { println!("odd"); } let k = if val % 2 == 0 { "odd" } else { "even" }; println!("k : {}", k); }
loop
rust의 loop는 C, java 등의 언어의
while(1) 과 비슷하다. break 와 continue 키워드로 반복문을 스킵하거나 종료할수 있다.fn main() { let mut val = 10; loop { println!("val : {}", val); if val >= 100 { break; } val += 10; } }
중첩 루프와 라벨링
rust의 loop의 장점은 중첩되어 있을 때 내부의 반복문에서 외부의 반복문을 중단시킬 수 있다는 것이다. 외부의 반복문에 접근하려면 loop에 라벨링을 해야 한다.
fn main() { let mut val = 10; 'outer: loop { if val >= 100 { break; } loop { val += 1; println!("val : {}", val); if val == 42 { break 'outer; } } } }
위 코드에서 내부 반복문만 break 하면 외부 반복문에 의해 무한루프에 빠지게 된다. 만약 C나 Java같은 언어라면 외부 반복문에서 조건 검사를 하여 break하는 제어문이 추가로 삽입되어야 한다.
루프의 표현식
loop 내에서 break 키워드를 return과 유사하게 사용할 수 있다. 이런 경우엔 loop 문에 세미콜론이 붙어야 한다.
fn main() { let mut val = 10; let result = 'outer: loop { if val >= 100 { break val; } loop { val += 1; println!("val : {}", val); if val == 42 { break 'outer (val); } } }; println!("result : {}", result); }
for문
rust의 for문은 for in 형태로 쓰며 in 뒤엔 이터레이터 타입이 온다. 숫자로부터 이터레이터를 생성할 때
a..b 형태(b 이전 값까지 포함)나 a..=b (b 포함) 형태로 쓸 수 있다.fn main() { for i in 1..10 { println!("i : {}", i); } for i in 1..=10 { println!("i : {}", i); } }