Variable

let

기본적으로 변수는 let 으로 선언하고 불변이며, mut으로 가변으로 선언할 수 있습니다

fn main() {
    let junny = 1;
    let mut mutableJunny = 2;
    
    junny = 4; // error: cannot assign twice to immutable variable `junny`
    mutableJunny = 4;// ok
}

const

상수는 불변성을 띄고 mut이 허용되지 않습니다

fn main() {
    const JUNNY:str = *"land";
    const AGE:i32 = 20;
}

Shadowing

같은 이름의 변수를 선언할 수 있고 값은 덮어씌워집니다.

fn main() {
    let x = 5;
    let x = x + 1;
    let x = x * 3;
    print!("value : {}", x);
}
> value : 18

Type

Rust는 정적 타입 언어로, 컴파일 타임에 모든 변수의 타입이 결정됩니다. Rust의 데이터 타입은 크게 두 가지 범주로 나뉩니다

스칼라 타입

스칼라 타입은 하나의 값으로 표현되는 타입입니다. Rust에서는 4가지 기본 스칼라 타입이 있습니다.

a. 정수형(Integer): 정수형은 부호 있는 i8, i16, i32, i64, i128 및 부호 없는 u8, u16, u32, u64, u128 타입이 있습니다. 숫자는 크기에 따라 표현 범위가 다릅니다.

b. 부동 소수점(Floating-Point): 부동 소수점 타입은 실수를 표현합니다. Rust에서는 두 가지 부동 소수점 타입이 있습니다 f32와 f64. 이 두 타입은 각각 32비트와 64비트로 표현되며, 단정도와 배정도 부동 소수점을 나타냅니다.

c. 불리언(Boolean): 불리언 타입은 참(true) 또는 거짓(false)의 값을 갖습니다. 불리언 타입은 bool로 표현됩니다.

d. 문자(Character): 문자 타입은 단일 유니코드 스칼라 값을 나타냅니다. Rust의 문자 타입은 char로 표현되며, 작은 따옴표로 묶입니다.

복합 타입

복합 타입은 여러 값을 하나의 타입으로 묶습니다 Rust에서는 튜플(tuple)과 배열(array)이 주요 복합 타입입니다.

a. 튜플(Tuple): 튜플은 여러 값의 고정된 길이의 순서 있는 목록입니다. 각 값은 서로 다른 타입을 가질 수 있습니다. 튜플은 괄호 ()와 쉼표 ,를 사용하여 정의되며, 튜플의 요소에 접근하려면 점 .을 사용합니다.

fn main() {
    let my_tuple = (1, "hello", 3.14);
    println!("The first element of my_tuple is: {}", my_tuple.0);
}

b. 배열(Array): 배열은 동일한 타입의 여러 값의 고정된 길이의 순서 있는 목록입니다 배열은 대괄호 []를 사용하여 정의되며, 인덱스를 사용하여 배열의 요소에 접근할 수 있습니다.

rustCopy codefn main() {
    let my_array: [i32; 5] = [1, 2, 3, 4, 5];
    println!("The second element of my_array is: {}", my_array[1]);
}

사용자 정의 데이터 타입

Rust는 사용자 정의 데이터 타입을 만드는 데 사용할 수 있는 몇 가지 기능을 제공합니다. 구조체(struct)와 열거형(enum)은 두 가지 주요 사용자 정의 데이터 타입입니다.

a. 구조체(Struct): 구조체는 사용자 정의 데이터 타입을 만드는 데 사용되며, 여러 필드를 묶어 하나의 타입으로 정의할 수 있습니다. 구조체는 struct 키워드를 사용하여 정의합니다.

struct Point {
    x: i32,
    y: i32,
}

fn main() {
    let p = Point { x: 0, y: 7 };
    println!("The point is at ({}, {})", p.x, p.y);
}

b. 열거형(Enum): 열거형은 서로 다른 타입의 여러 값 중 하나를 가질 수 있는 사용자 정의 데이터 타입입니다. 열거형은 enum 키워드를 사용하여 정의되며, 각각의 값은 열거형의 한 멤버입니다.

enum Direction {
    North,
    South,
    East,
    West,
}

Rust의 데이터 타입은 프로그래밍의 기본 구성 요소로, 다양한 값을 효과적으로 저장하고 처리하는 데 필요한 도구를 제공합니다. 이러한 데이터 타입을 이해하고 사용하면 코드의 안전성과 가독성을 높일 수 있으며, Rust의 강력한 타입 시스템을 최대한 활용할 수 있습니다. Rust에서 제공하는 기본 데이터 타입 외에도, 사용자 정의 데이터 타입을 사용하여 프로젝트에 필요한 복잡한 데이터 구조를 만들 수 있습니다. 이를 통해 코드의 구조를 명확하게 하고, 관리 및 유지 보수가 쉬운 애플리케이션을 개발할 수 있습니다

타입 추론

Rust의 타입 추론 시스템은 코드 작성을 더 간결하게 만들어주는 중요한 기능입니다. 컴파일러는 대부분의 경우 변수의 타입을 자동으로 추론할 수 있으므로, 변수를 선언할 때마다 명시적으로 타입을 지정할 필요가 없습니다. 그러나 명확한 코드를 작성하거나 컴파일러의 타입 추론을 도와주기 위해 타입을 명시적으로 지정하는 것이 좋습니다.

fn main() {
    let a = 42; // i32로 추론됩니다.
    let b: u32 = 42; // 명시적으로 u32 타입으로 지정합니다.
}

Rust의 제네릭을 사용하면 다양한 타입에 동작하는 함수나 구조체를 만들 수 있습니다. 제네릭은 타입에 대한 일반화를 가능하게 하여 코드의 중복을 줄이고 재사용성을 높이는 데 도움이 됩니다.

Last updated