콘텐츠로 이동

📚 Rust 배우기 – Chars (문자)

영상: 프로그래밍 언어 러스트를 배웁시다! 004 Easy Rust in Korean: Chars

주제: Rust에서 char 타입을 이해하고 사용하는 방법

✨ 핵심 정리

🟢 char 타입은 Rust에서 문자(Unicode 단일 문자) 를 저장하는 타입

🟢 문자 리터럴은 'a', '한', '字' 와 같이 작은 따옴표 ' 를 사용

🟢 char는 사실 4바이트 (UTF-32) 크기를 가지며, 모든 유니코드 문자를 표현 가능

🟢 문자열 "Hello"는 여러 개의 char가 모여 있는 &str 타입

🟢 반복문 for c in "Hello".chars() 와 같이 .chars() 메서드를 사용해 문자열을 한 글자씩 순회 가능

🟢 char와 u8(바이트)은 다르며, char는 한 글자를 의미하고 u8은 1바이트 정수

🛠️ Rust 코드 예제

fn main() {
    // 문자 (char) 타입
    let ch: char = 'A';  
    println!("문자: {}", ch);

    // 다양한 유니코드 문자 저장 가능
    let korean = '한';
    let chinese = '字';
    let emoji = '😊';

    println!("한글: {}, 한자: {}, 이모지: {}", korean, chinese, emoji);

    // 문자열에서 chars()로 순회
    for c in "Hello".chars() {
        println!("{}", c);
    }
}

💡 출력 결과

문자: A
한글: 한, 한자: 字, 이모지: 😊
H
e
l
l
o

🛠️ Rust 실습 코드

✅ 핵심 요약

char는 유니코드 단일 문자를 담는 타입이며 4바이트 크기예요. (이모지 포함 🥳)

문자열은 여러 char이 모인 텍스트 조각으로, 항상 큰따옴표 " 를 사용합니다.

char 리터럴은 작은따옴표 ' 를 사용합니다. ('A', '한', '😊')

'a' as u8 같이 정수형으로 캐스팅하면 유니코드 코드 포인트(ASCII 범위는 그대로) 값을 얻을 수 있어요.

println! 매크로로 출력할 때, 문자열은 반드시 큰따옴표가 필요합니다.

fn main() {                                      // 프로그램의 시작점: main 함수

    // println!('Hello, world!');                // (잘못된 예시) 문자열에 작은따옴표 사용 → 컴파일 에러
    // string은 무조건 ""으로 ''으로 입력하면 에러 발생
    // help: if you meant to write a string literal, use double quotes
    // error[E0762]: unterminated character literal

    println!("Hello, world!");                   // (정상) 문자열은 큰따옴표(")를 사용해 출력

    let first_letter = 'A';                      // char 리터럴: 작은따옴표(') 사용, 단일 문자 저장
    // char 타입은 Rust에서 문자(Unicode 단일 문자)로 이모지도 됨
    // char size = 4 bytes
    println!("문자: {}", first_letter);          // 포맷 문자열에 {}로 값 삽입하여 출력

    // 다양한 유니코드 문자 저장 가능
    let korean = '한';                           // 한글 1글자 (유니코드)
    let chinese = '字';                          // 한자 1글자 (유니코드)
    let emoji = '😊';                            // 이모지 1개 (유니코드)

    println!("한글: {}, 한자: {}, 이모지: {}",  // 여러 값을 한 번에 출력
             korean, chinese, emoji);

    // casting = simple type change using 'as'
    let my_number = 'a' as u8;                   // 'a'의 유니코드(ASCII) 값(97)으로 캐스팅
    println!("Hello, world! My number is {}",    // 숫자값 출력
             my_number);

    /*
    // 결과 코드 :
    Hello, world!
    문자: A
    한글: 한, 한자: 字, 이모지: 😊
    Hello, world! My number is 97
    */
}

📊 Mermaid 시각화 – Rust 문자열과 문자 관계

flowchart TD
    A["문자열 (&str)"] --> B["'H' (char)"]
    A --> C["'e' (char)"]
    A --> D["'l' (char)"]
    A --> E["'l' (char)"]
    A --> F["'o' (char)"]

    subgraph 설명
    B --> G["Unicode 단일 문자"]
    end

🧩 초보자 이해 포인트

✅ char는 한 글자만 담을 수 있음 → 'A', '한', '😊'

✅ &str (문자열)은 여러 char의 묶음 → "Hello"

✅ 문자열을 다룰 때 .chars()를 사용하면 글자를 하나씩 꺼낼 수 있음

✅ Rust의 char는 단순히 ASCII 문자만 담는 게 아니라 모든 유니코드 문자를 담을 수 있음

📌 요약

Rust의 char는 4바이트 유니코드 문자

작은 따옴표 '로 표현 ('A', '😊')

문자열은 여러 개의 char 모음 ("Hello")

.chars() 메서드로 문자열을 한 글자씩 다룰 수 있음

👉 Learn more on Glasp: https://glasp.co/reader?url=https://www.youtube.com/watch?v=yR33X2Ik9W0