RUST 기초

Alpha, Orderly·2024년 5월 31일

RUST

목록 보기
1/11
post-thumbnail

Rust 빠른 특징 정리

RUST 공식 문서를 바탕으로 복기 및 정리한 문서입니다.


기본 문법 특징

  • 세미콜론(;)

    • 문장 끝에 붙입니다.
    • 마지막 줄에서 세미콜론을 생략하면 return 과 같은 효과를 가집니다.
  • 네이밍 컨벤션

    • 변수와 함수명은 snake_case 를 사용합니다.

Cargo

Rust의 빌드 시스템 및 패키지 매니저.

프로젝트 시작하기

cargo new 프로젝트_이름
  • 새로운 프로젝트 생성
cargo init
  • 현재 디렉토리에 프로젝트 생성

빌드하기

cargo build
  • target/debug/프로젝트_이름 실행 파일 생성
  • ./target/debug/프로젝트_이름 으로 실행 가능

빌드 & 실행 동시

cargo run

컴파일만 확인하기

cargo check

릴리즈 빌드

cargo build --release

Dependency 추가하기

Cargo.toml 에 추가:

[package]
name = "guessing_game"
version = "0.1.0"
edition = "2021"

[dependencies]
rand = "0.8.5"
  • cargo build 또는 cargo run 시 자동으로 설치

Dependency 업데이트

cargo update

Rust 기본

출력

println!("You guessed: {}", guess);
println!("You guessed: {guess}");
  • {} 안에 변수를 넣어 출력 가능
  • 변수명을 직접 지정할 수도 있음

라이브러리 가져오기

use std::io;

변수 선언

let apple = 1;
let mut banana = 2;
  • 변수는 기본 불변(immutable)
  • mut 키워드로 가변(mutable) 선언 가능

섀도잉 (Shadowing)

let a = 1;
let a = "1";
  • 같은 이름의 변수를 새로 선언하여 기존 변수를 덮어씀

상수

const EXAMPLE: u32 = 33;
  • 반드시 타입을 명시해야 함
  • mut 사용 불가

데이터 타입

Rust의 모든 값은 타입을 가진다.

스칼라 타입 (단일 값)

  • 정수형: i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize
  • 부동소수점: f32, f64
  • 불리언: bool
  • 문자: char

복합 타입

  • 튜플: 서로 다른 타입을 묶음
let 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]);
  • 길이는 고정, stack에 저장됨

String vs \&str

  • &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 };

반복문

loop

let result = loop {
    counter += 1;
    if counter == 10 {
        break counter * 2;
    }
};
  • 무한 반복, break 로 탈출하며 값 반환 가능
  • 라벨을 붙여 특정 루프를 종료할 수 있음

while

while number != 0 {
    println!("{number}!");
    number -= 1;
}

for

let a = [10, 20, 30];
for element in a {
    println!("the value is: {element}");
}

for number in (1..4).rev() {
    println!("{number}!");
}

profile
만능 컴덕후 겸 번지 팬

0개의 댓글