[Rust] 제어 흐름(Control Flow): 조건문과 반복문 활용 가이드

[Rust] 제어 흐름(Control Flow): 조건문과 반복문 활용 가이드

Rust/Concepts
민호이 민호이 2025. 1. 9. 22:07
목차
  1. 1. Rust의 기본 제어문 요소
  2. 1.1 조건문: if, else, 그리고 else if
  3. 1.2 반복문: loop, while, for
  4. 2. Rust만의 고유한 제어문
  5. 2.1 match 표현식
  6. 2.2 if let과 while let
  7. 3. 고급 제어문 기술
  8. 3.1 Iterator와 고급 패턴
  9. 3.2 에러 제어와 try 블록
  10. 4. 실제 프로젝트에서의 제어문
  11. 5. 결론
  12. Reference

제어문는 프로그래밍에서 코드 실행 흐름을 제어하는 기본 메커니즘입니다. 모든 프로그래밍 언어는 조건문, 반복문 등의 제어문 도구를 제공하며, 이를 통해 개발자는 프로그램의 논리를 효과적으로 설계할 수 있습니다. Rust는 메모리 안전성과 성능을 동시에 추구하는 언어로, 강력하면서도 직관적인 제어문 도구를 제공합니다.

이 글에서는 Rust의 제어문 개념을 초보자와 숙련자 모두 이해할 수 있도록 자세히 설명하고, 예제와 함께 실제 활용 방안을 탐구합니다.


1. Rust의 기본 제어문 요소

1.1 조건문: if, else, 그리고 else if

Rust에서 조건문은 프로그램이 특정 조건에 따라 다른 코드를 실행하도록 합니다.

  • 기본 if 조건문:
fn main() {
let number = 7;
if number < 10 {
println!("Number is less than 10");
} else {
println!("Number is 10 or greater");
}
}
  • else if를 활용한 다단계 조건:
fn main() {
let number = 15;
if number % 3 == 0 && number % 5 == 0 {
println!("Number is divisible by both 3 and 5");
} else if number % 3 == 0 {
println!("Number is divisible by 3");
} else if number % 5 == 0 {
println!("Number is divisible by 5");
} else {
println!("Number is not divisible by 3 or 5");
}
}
  • if 표현식: Rust의 조건문은 값으로 평가될 수 있습니다. 이를 통해 변수 초기화 시 더 간결한 코드를 작성할 수 있습니다.
let number = 5;
let message = if number > 0 { "Positive" } else { "Negative or Zero" };
println!("{}", message);

1.2 반복문: loop, while, for

Rust는 다양한 반복문을 제공하며, 각 반복문은 고유한 사용 사례에 적합합니다.
아래의 설명을 읽어보고 더 자세한 반복문의 활용은 아래의 글을 참고해보세요.

[Rust] - [Rust] Loops in Rust (Rust에서의 반복문)

  • loop: 무한 반복을 수행하며, break로 종료합니다.
fn main() {
let mut count = 0;
loop {
count += 1;
if count == 5 {
println!("Count reached 5, exiting loop.");
break;
}
}
}
  • while: 특정 조건이 참인 동안 반복합니다.
fn main() {
let mut num = 3;
while num > 0 {
println!("Number is: {}", num);
num -= 1;
}
}
  • for: 컬렉션을 순회하는 가장 간결한 방법입니다.
fn main() {
let array = [10, 20, 30, 40];
for value in array {
println!("Value is: {}", value);
}
}
  • 인덱스 기반 반복:
fn main() {
for i in 0..5 {
println!("Index is: {}", i);
}
}

2. Rust만의 고유한 제어문

2.1 match 표현식

Rust의 match는 패턴 매칭을 활용한 강력한 제어문 도구입니다. 여러 조건을 한 번에 처리할 수 있어 코드의 가독성을 높여줍니다.

  • 기본 사용법:
fn main() {
let value = 3;
match value {
1 => println!("One"),
2 => println!("Two"),
3 => println!("Three"),
_ => println!("Something else"),
}
}
  • 범위 매칭:
fn main() {
let value = 7;
match value {
1..=5 => println!("Between 1 and 5"),
6..=10 => println!("Between 6 and 10"),
_ => println!("Out of range"),
}
}
  • Option 타입과 match:
fn main() {
let some_value = Some(42);
match some_value {
Some(x) => println!("Found: {}", x),
None => println!("Nothing found"),
}
}

2.2 if let과 while let

if let과 while let은 코드의 간결성을 높이면서 특정 값을 매칭하여 처리할 수 있는 강력한 도구입니다.

  • if let:
if let Some(value) = Some(10) {
println!("Value is: {}", value);
}
  • while let:
fn main() {
let mut stack = vec![1, 2, 3, 4];
while let Some(top) = stack.pop() {
println!("Popped: {}", top);
}
}

3. 고급 제어문 기술

3.1 Iterator와 고급 패턴

Rust의 Iterator와 Closure는 반복문의 유연성을 극대화합니다.

  • map 메서드 활용:
fn main() {
let numbers = vec![1, 2, 3, 4];
let squared: Vec<_> = numbers.iter().map(|x| x * x).collect();
println!("{:?}", squared);
}

3.2 에러 제어와 try 블록

Rust 1.65 이후로 추가된 try 블록은 에러 흐름 제어를 간소화합니다.

fn main() -> Result<(), String> {
let value = try {
let x = "42".parse::<i32>()?;
x * 2
};
println!("Value: {:?}", value);
Ok(())
}

4. 실제 프로젝트에서의 제어문

제어문는 실제 애플리케이션에서 복잡한 로직을 간단히 처리할 수 있도록 합니다.

  • API 요청 처리:
fn handle_request(status_code: u16) {
match status_code {
200 => println!("OK"),
404 => println!("Not Found"),
_ => println!("Unknown status code"),
}
}
  • 에러와 Result 결합:
fn divide(a: i32, b: i32) -> Result<i32, String> {
if b == 0 {
Err("Cannot divide by zero".to_string())
} else {
Ok(a / b)
}
}

5. 결론

Rust의 제어문는 안전성과 효율성을 극대화하는 데 필수적인 요소입니다. 조건문, 반복문, 패턴 매칭, 고급 반복자 활용 등 다양한 도구를 통해 복잡한 로직도 간결하게 표현할 수 있습니다. 이 글에서 제공한 예제를 따라 해보며 Rust의 제어문를 실습하고, 더 안전하고 강력한 애플리케이션을 만들어 보세요.

 

Reference

  • https://doc.rust-lang.org/book/ch03-05-control-flow.html
  • https://doc.rust-kr.org/ch03-05-control-flow.html
  • Blandy, J., Orendorff, J., and Tindall, L. F. S. 2021. Programming Rust: Fast, Safe Systems Development. 2nd ed. O'Reilly Media, Sebastopol, CA.
저작자표시 (새창열림)
  1. 1. Rust의 기본 제어문 요소
  2. 1.1 조건문: if, else, 그리고 else if
  3. 1.2 반복문: loop, while, for
  4. 2. Rust만의 고유한 제어문
  5. 2.1 match 표현식
  6. 2.2 if let과 while let
  7. 3. 고급 제어문 기술
  8. 3.1 Iterator와 고급 패턴
  9. 3.2 에러 제어와 try 블록
  10. 4. 실제 프로젝트에서의 제어문
  11. 5. 결론
  12. Reference
'Rust/Concepts' 카테고리의 다른 글
  • [Rust] 구조체 완전 정복 가이드 (상세 개념, 예제)
  • [Rust] 소유권(Ownership) 완벽 가이드: 개념부터 예제까지
  • [Rust] 함수 사용법: 정의, 호출, 고급 예제까지
  • [Rust] 데이터 타입 정리: 기본부터 고급까지 한눈에
민호이
민호이
민호이
ChungCODE
민호이
전체
오늘
어제
  • Categories (128)
    • 스포츠 (6)
    • 인공지능 (5)
    • 주식 (6)
      • 경제 주식 전망 (5)
      • ETF (9)
    • CSAPP (4)
      • Lab Session (4)
      • Concepts (0)
    • C (19)
    • Java (24)
    • Rust (44)
      • Concepts (27)
      • Libraries (17)
    • PS (2)
    • 국내 소식 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 유클리드 호제법
  • 코드업
  • 최소공배수
  • 수학
  • 알고리즘
  • c++
  • 최대공약수
  • C

최근 댓글

최근 글

반응형
hELLO · Designed By 정상우.v4.2.1
민호이
[Rust] 제어 흐름(Control Flow): 조건문과 반복문 활용 가이드
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.