Rust Fundamentals

  • 12 minutes to read

https://learn.microsoft.com/en-us/training/paths/rust-first-steps/

Rust 기초 문법 강의 목차

  1. 강의 소개

    • Rust 언어에 대한 소개
    • Rust의 주요 특징
  2. Rust 개발 환경 구축

    • Rust 설치 방법
    • Rust 개발 툴 소개 (Cargo, rustup, rustc 등)
    • 통합개발환경(IDE) 설정
  3. 변수와 데이터 타입

    • 변수 선언과 초기화
    • 데이터 타입
    • 상수와 불변성
  4. 연산자와 표현식

    • 산술 연산자
    • 비교 연산자
    • 논리 연산자
    • 대입 연산자
    • 비트 연산자
    • 연산자 우선순위
  5. 제어문

    • 조건문 (if, else, else if)
    • 반복문 (loop, while, for)
    • 패턴 매칭 (match)
  6. 함수

    • 함수 정의 및 호출
    • 매개변수와 반환 값
    • 반환 및 에러 처리
  7. 모듈과 패키지

    • 모듈 정의와 사용
    • 패키지 생성 및 관리 (Cargo 활용)
  8. 구조체와 열거형

    • 구조체 정의와 사용
    • 열거형 정의와 사용
    • 구조체 및 열거형 메소드
  9. 에러 처리

    • 에러 처리 방법
    • Option, Result 열거형
    • unwrap, expect 메소드
    • ? 연산자
  10. 제네릭과 트레이트

    • 제네릭 데이터 타입
    • 트레이트 정의 및 구현
    • 제한된 제네릭과 트레이트 바운드
  11. 스마트 포인터

    • 참조와 빌림
    • Box, Rc, Arc, RefCell, Mutex 등의 스마트 포인터
    • 런타임 빌림 검사
  12. 동시성과 병렬성

    • 스레드 생성 및 관리
    • 메시지 전달을 통한 동시성
    • 동기화 기술 (Mutex, RwLock 등)
    • 채널 사용하기
  13. 마무리 및 실전 프로젝트

    • Rust로 작성된 오픈 소스 프로젝트 분석
    • 실전 프로젝트 구현

Rust 강의 소개

이 강의에서는 Rust 프로그래밍 언어의 기초를 배우고, Rust의 주요 특징들을 살펴봅니다.

1. 강의 소개

Rust 언어에 대한 소개

Rust는 성능과 안정성, 그리고 메모리 안전성에 중점을 둔 시스템 프로그래밍 언어입니다. Rust는 C 계열 프로그래밍 언어로, 강력한 형식(강타입, Strongly Typed)의 언어입니다. 메모리 안전성을 제공하며, 가비지 수집기는 없습니다.

Rust의 주요 특징

  • Memory Safety: Rust는 컴파일 시점에 메모리 안전성을 검사하여 런타임에 발생하는 메모리 관련 오류를 최소화합니다.
  • Zero-Cost Abstractions: Rust는 고수준의 추상화를 제공하면서도, 성능 저하 없이 실행됩니다.
  • Concurrency: Rust는 데드락을 방지하고 데이터 경쟁을 최소화하는 동시성 구현을 지원합니다.

2. Rust 공식 사이트

Rust의 공식 사이트는 다음과 같습니다.

Rust Playground

온라인에서 Rust 코드를 작성하고 실행할 수 있는 Rust Playground를 이용할 수 있습니다.

3. Rust 학습 자료

Rust 공식 문서 및 학습 자료는 다음과 같습니다.

4. Rust 버전

Rust의 주요 역사는 다음과 같습니다.

  • 2010년: Mozilla 재단에서 공개
  • 2015년: 버전 1.0 공개
  • 2022년(현재): 1.65.0

이 강의를 통해 Rust 프로그래밍 언어의 기초를 습득하고, 실제 프로젝트에 적용할 수 있는 지식을 쌓아보겠습니다.

Rust 개발 환경 구축

이 섹션에서는 Rust 개발 환경을 구축하는 방법에 대해 설명합니다. Rust 설치 방법, 개발 툴 소개, 그리고 통합 개발 환경(IDE) 설정 방법을 살펴봅니다.

1. Rust 설치 방법

Rust는 모든 주요 운영 체제에서 사용할 수 있습니다. 설치 방법은 다음과 같습니다.

Windows

  1. https://www.rust-lang.org/tools/install에서 rustup-init.exe를 다운로드합니다.
  2. 다운로드한 파일을 실행하고 안내에 따라 설치를 진행합니다.

macOS 및 Linux

터미널을 열고 다음 명령을 입력하여 Rust를 설치합니다.

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

2. Rust 개발 툴 소개

Rust 개발에 필요한 주요 툴들은 다음과 같습니다.

  • rustc: Rust 컴파일러입니다. 소스 코드를 컴파일하여 실행 파일로 변환합니다.
  • rustup: Rust 버전 및 관련 도구들을 관리하는 툴입니다.
  • Cargo: Rust 패키지 관리자로, 프로젝트 생성 및 의존성 관리를 담당합니다.

3. 통합개발환경(IDE) 설정

Rust 개발을 위한 주요 통합 개발 환경(IDE)은 다음과 같습니다.

  • Visual Studio Code: Visual Studio Code에서 Rust를 사용하려면, RustRust Analyzer 확장 프로그램을 설치합니다.
  • IntelliJ IDEA: JetBrains에서 제공하는 IntelliJ IDEA에서 Rust를 사용하려면, IntelliJ Rust 플러그인을 설치합니다.
  • Sublime Text: Sublime Text에서 Rust를 사용하려면, Rust Enhanced 패키지를 설치합니다.

이러한 방법으로 Rust 개발 환경을 구축할 수 있습니다. 설치 및 설정이 완료되면, Rust 프로젝트를 생성하고 코딩을 시작할 수 있습니다.

Cargo를 사용한 Rust Hello World 프로젝트

이 글에서는 Rust의 패키지 관리자인 Cargo를 사용하여 Hello World 프로젝트를 생성하고 실행하는 방법을 소개합니다.

Cargo 소개

Cargo는 Rust의 패키지 관리자로, 프로젝트 생성 및 의존성 관리를 담당합니다. .NET의 NuGet과 같은 개념입니다.

Cargo CLI 명령어

주요 Cargo 명령어들은 다음과 같습니다.

  • cargo new: 새 Rust 프로젝트를 생성합니다.
  • cargo build: 프로젝트를 빌드합니다.
  • cargo run: 프로젝트를 실행합니다.
  • cargo check: 코드를 검사하고 오류를 찾습니다.
  • cargo bench: 벤치마크를 실행합니다.
  • cargo clean: 빌드 캐시를 제거합니다.

Hello World 프로젝트 생성 및 실행

  1. 새 프로젝트를 생성합니다.
cargo new hello_world
  1. 프로젝트 폴더로 이동합니다.
cd hello_world
  1. 프로젝트의 src/main.rs 파일에 Hello World 코드를 작성합니다.
fn main() {
    println!("Hello, world!");
}
  1. 프로젝트를 실행합니다.
cargo run
  1. 실행 결과를 확인합니다.
Hello, world!

crates.io 사이트

crates.io는 Cargo의 공식 패키지 모음 사이트입니다. Rust 라이브러리 및 프레임워크를 검색하고 사용할 수 있습니다.

이러한 방법으로 Cargo를 사용하여 Rust 프로젝트를 생성하고 실행할 수 있습니다. 이 과정을 통해 Rust 프로그래밍에 대한 기본적인 이해를 얻을 수 있습니다.

01_05_rust update 명령을 사용하여 Rust 컴파일러 최신 버전으로 업데이트

https://youtu.be/43PRXMy_teM

01_03_깃헙에 Rust 프로그래밍 언어 강의 소스 모음 리포지토리 생성

https://youtu.be/YhLZ9jAbEbM

01_04_Rust 예제 또는 프로젝트 생성에 대한 기본 원칙 미리 소개

https://youtu.be/pbC0axT6PiY

Rust의 변수와 데이터 타입

이 섹션에서는 Rust에서의 변수 선언, 초기화, 데이터 타입, 상수 및 불변성에 대해 설명합니다.

1. 변수 선언과 초기화

Rust에서 변수는 let 키워드를 사용하여 선언하며, 초기화할 수 있습니다. 기본적으로 변수는 불변(immutable)입니다. 값을 변경하려면 mut 키워드를 사용하여 가변(mutable) 변수를 선언해야 합니다.

fn main() {
    let x = 5; // 불변 변수
    println!("The value of x is: {}", x);

    let mut y = 5; // 가변 변수
    println!("The value of y is: {}", y);
    y = 6;
    println!("The value of y is: {}", y);
}

2. 데이터 타입

Rust는 몇 가지 기본 데이터 타입을 제공합니다.

  • 정수형(Integer): i8, i16, i32, i64, i128, u8, u16, u32, u64, u128
  • 부동 소수점(Floating-Point): f32, f64
  • 불리언(Boolean): bool
  • 문자(Character): char

변수를 선언할 때 데이터 타입을 명시적으로 지정할 수 있습니다.

fn main() {
    let x: i32 = 5;
    let y: f64 = 3.14;
    let is_true: bool = true;
    let character: char = 'A';
}

3. 상수와 불변성

상수는 불변성을 갖는 값으로, 프로그램 내에서 변경할 수 없습니다. Rust에서 상수는 const 키워드를 사용하여 선언합니다. 상수는 항상 타입을 명시해야 하며, 상수 표현식만 할당할 수 있습니다.

const MAX_VALUE: u32 = 100_000;

fn main() {
    println!("The maximum value is: {}", MAX_VALUE);
}

불변성은 변수가 한 번 할당된 후 값이 변경되지 않음을 의미합니다. Rust에서 기본적으로 모든 변수는 불변입니다. 이를 통해 컴파일 시간에 메모리 안전성을 높이고, 코드의 가독성을 향상시킬 수 있습니다.

이러한 내용을 통해 Rust에서 변수와 데이터 타입, 그리고 상수와 불변성에 대한 기본적인 이해를 얻을 수 있습니다.

변수

rust는 변수 선언시 snake case 표기법을 사용합니다. C#과 Java는 camel case를 사용합니다.

let name: string = String::from("RedPlus");

let mut age: i32 = 21; 

age = age + 1; 

숫자

  • i32
  • i64
  • i128
  • f32
  • f64

루프

while count <= 5 {

}
loop {

    if cnt == 5 {
        break; // continue;
    }
}

Rust 테스트 코드

#[test]
fn test_demo() {
    assert_eq!(3, 5); 
}
cargo test
cargo bench
cargo clean

배열

let arr = [ 1, 2, 3, 4, 5 ];

let arr: [i32; 5] = [ 1, 2, 3, 4, 5 ];

함수

fn sum(num1: i32, num2: i32) -> i32) {
    num1 + num2
}

Option

None

값이 없을 때

Some()

값이 있을 때

match 키워드

구조체

struc Person {
    name: String,
    age: i32,
    isVegan: bool,
}

Rust 모듈

mod my_mod {
    pub fn get_data() {}
}

fn main() {
    my_mod::get_data();
}

제네릭

Option<T>

Option<i32>

튜플

let p = ("Name", 21, true);  

패턴 매칭

match result {
    Some(x) if x > 0 => println!("+"),
    Some(x) => println!("-"),
    Some(x)
    _ => println!("버림")    
}

match 키워드는 다른 프로그래밍 언어의 switch 키워드와 비슷합니다.

테스트

cargo test 

더 깊이 공부하고 싶다면
DevLec에서는 실무 중심의 C#, .NET, ASP.NET Core, Blazor, 데이터 액세스 강좌를 단계별로 제공합니다. 현재 수강 가능한 강좌 외에도 더 많은 과정이 준비되어 있습니다.
DevLec.com에서 자세한 커리큘럼을 확인해 보세요.
DevLec 공식 강의
C# Programming
C# 프로그래밍 입문
프로그래밍을 처음 시작하는 입문자를 위한 C# 기본기 완성 과정입니다.
ASP.NET Core 10.0
ASP.NET Core 10.0 시작하기 MVC Fundamentals Part 1 MVC Fundamentals Part 2
웹 애플리케이션의 구조와 MVC 패턴을 ASP.NET Core로 실습하며 익힐 수 있습니다.
Blazor Server
풀스택 웹개발자 과정 Part 1 풀스택 웹개발자 과정 Part 2 풀스택 웹개발자 과정 Part 3
실무에서 바로 활용 가능한 Blazor Server 기반 관리자·포털 프로젝트를 만들어 봅니다.
Data & APIs
Entity Framework Core 시작하기 ADO.NET Fundamentals Blazor Server Fundamentals Minimal APIs
데이터 액세스와 Web API를 함께 이해하면 실무 .NET 백엔드 개발에 큰 도움이 됩니다.
VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com