
RUST 공식 문서를 바탕으로 복기 및 정리한 문서입니다.
세미콜론(;)
return 과 같은 효과를 가집니다.네이밍 컨벤션
Rust의 빌드 시스템 및 패키지 매니저.
cargo new 프로젝트_이름
cargo init
cargo build
target/debug/프로젝트_이름 실행 파일 생성./target/debug/프로젝트_이름 으로 실행 가능cargo run
cargo check
cargo build --release
Cargo.toml 에 추가:
[package]
name = "guessing_game"
version = "0.1.0"
edition = "2021"
[dependencies]
rand = "0.8.5"
cargo build 또는 cargo run 시 자동으로 설치cargo update
println!("You guessed: {}", guess);
println!("You guessed: {guess}");
{} 안에 변수를 넣어 출력 가능use std::io;
let apple = 1;
let mut banana = 2;
mut 키워드로 가변(mutable) 선언 가능let a = 1;
let a = "1";
const EXAMPLE: u32 = 33;
mut 사용 불가Rust의 모든 값은 타입을 가진다.
i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usizef32, f64boolcharlet tup: (i32, f64, u8) = (1, 1.1, 2);
let (x, y, z) = tup; // 구조 해체
println!("{}", tup.0); // 인덱스로 접근
let a = [1, 2, 3, 4, 5];
println!("{}", a[0]);
&str: 문자열 슬라이스, 불변, 프로그램에 하드코딩된 문자열 리터럴에 자주 사용됨let s: &str = "hello";
String: heap에 저장되는 가변 문자열, 동적으로 크기 조절 가능let mut s: String = String::from("hello");
s.push_str(" world");
fn main() {
println!("Hello, world!");
another_function();
}
fn another_function() {
println!("Another function.");
}
fn print_measurement(value: i32, unit_label: char) {
println!("The measurement is: {value}{unit_label}");
}
fn five() -> i32 {
5 // return 5 와 동일
}
// 한 줄 주석
if number % 4 == 0 {
println!("divisible by 4");
} else if number % 3 == 0 {
println!("divisible by 3");
} else {
println!("not divisible");
}
if 는 표현식이므로 변수 대입 가능let number = if condition { 5 } else { 6 };
let result = loop {
counter += 1;
if counter == 10 {
break counter * 2;
}
};
break 로 탈출하며 값 반환 가능while number != 0 {
println!("{number}!");
number -= 1;
}
let a = [10, 20, 30];
for element in a {
println!("the value is: {element}");
}
for number in (1..4).rev() {
println!("{number}!");
}