let과 mut
let x = 5; // 불변 변수
let mut y = 5; // 가변 변수
y = 6; // 가변 변수는 값 변경 가능
상수
const MAX_POINTS: u32 = 100_000; // 상수는 타입 명시 필수
섀도잉
let x = 5;
let x = x + 1; // 이전 x를 가리는(shadow) 새로운 x
스칼라 타입
// 정수
let i: i32 = -42; // 32비트 부호있는 정수
let u: u32 = 42; // 32비트 부호없는 정수
// 부동소수점
let f: f64 = 3.14; // 64비트 부동소수점
// boolean
let t = true;
let f = false;
// 문자
let c = 'z';
let emoji = '😻';
복합 타입
// 튜플
let tup: (i32, f64, u8) = (500, 6.4, 1);
let (x, y, z) = tup; // 구조분해
// 배열
let arr = [1, 2, 3, 4, 5];
let first = arr[0];
매개변수와 반환값
fn add(x: i32, y: i32) -> i32 {
x + y // 세미콜론 없으면 반환값
}
let result = add(5, 3);
println!("결과: {}", result);
표현식과 구문
let y = {
let x = 3;
x + 1 // 표현식, 세미콜론 없음
};
일반 주석
// 이것은 한 줄 주석입니다.
/* 이것은
여러 줄 주석입니다. */
문서화 주석
/// 이 함수는 주어진 숫자에 1을 더합니다.
///
/// # 예제
///
/// ```
/// let five = 5;
/// assert_eq!(6, add_one(5));
/// ```
fn add_one(x: i32) -> i32 {
x + 1
}
if 표현식
let number = 6;
if number % 4 == 0 {
println!("number는 4로 나누어떨어집니다");
} else if number % 3 == 0 {
println!("number는 3으로 나누어떨어집니다");
} else {
println!("number는 4나 3으로 나누어떨어지지 않습니다");
}
loop 반복문
let mut counter = 0;
let result = loop {
counter += 1;
if counter == 10 {
break counter * 2;
}
};
println!("결과는 {}", result);
while 반복문
let mut number = 3;
while number != 0 {
println!("{}!", number);
number -= 1;
}
println!("발사!");
for 반복문
let a = [10, 20, 30, 40, 50];
for element in a.iter() {
println!("값: {}", element);
}
break와 continue
for number in 1..6 {
if number == 3 {
continue;
}
if number == 5 {
break;
}
println!("{}", number);
}