Languages/RUST

[Rust] Rust란?

MOONCO 2023. 1. 10. 14:49

 

Rust 란?

서버, 클라이언트 프로그램을 만들기 위한 프로그래밍 언어 ( with Mozilla )로,

C언어와 같은 수준에서 코드를 작성하며, 최근 개발자 사이에서 인기가 오르고 있는 신생언어(7년넘음)

대표적으로, javascript 런타임 환경인 deno가 Rust로 개발되었다.

 

특징 & 필요성

일 많~이, 동시에 처리함

안전함

빠른 속도

 

1. Null Safety ( 에러 초기 감지 )

모든 변수는 초기값을 가져야만 한다 ( 없으면 컴파일 에러! )
- C 언어는 초기값 없이 선언이 가능하다
( 빈 변수에 접근하는 일이 생긴다.. / 에러를 정확히 감지할 수 없는 복잡한 상황이 생길 수 있음 )

값이 해제된 주소(포인터)에 접근하는 코드가 있다면,
이를 컴파일러가 미리 감지하고, 컴파일시(기계어로 번역할때) 알려줌 ( 실행 중에 오류 안남!! )

 

2. 타입 클래스 지원

변수 선언 시 타입을 지정하지 않아도, 컴파일러가 타입을 추론해 자동 지정 해준다!
( 초기값 

함수의 인자나 반환값에서는 타입 정보를 무조건 작성해야 한다.

 

3. 소유자가 있다

모든 변수에는 소유자가 있다.

한명의 소유자만 가질 수 있다.

소유자가 실행 범위를 벗어나면,
소유자가 가진 모든 값들을 삭제한다.( 메모리 공간을 확보 )

Rust 설치 ( Mac / Linux )

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

 

환경변수 설정

source $HOME/.cargo/env

 

설치 확인

cargo --version

 

프로젝트 만들기

cargo new hello-rust

 

프로젝트 폴더 코드편집기로 열기 ( IDE )

rust 프로젝트 초기 모습

 


Rust 구조

1. Cargo.toml

Rust 프로젝트에 관한 설명(메타데이터), 설치된 라이브러리 정보(종속성)을 적는 파일

 

2. src/main.rs

우리가 코드를 적는, 프로젝트의 메인 파일

cargo run 명령어로 실행되는 파일

 

 


Rust 프로젝트 시작

cd hello-rust
cargo run

 

main.rs 가 실행된다!

 Rust 라이브러리 설치하기 ( 종속성 이용 )

 

Cargo.toml 수정

# Cargo.toml 파일 내용

[packages]
name = "hello-rust"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
ferris-says = "0.2" # 새로 설치할 라이브러리

 

 

실행 파일 생성 ( 빌드 )

cargo build

 

라이브러리 사용하기

use ferris_says::say; // 라이브러리 가져옴
use std::io::{stdout, BufWriter}; // 표준 입출력 라이브러리 가져옴

fn main() {
    // 컴파일된 바이너리가 호출될때, main 함수 내부의 코드가 실행된다.


    // 표준 출력 시스템 가져오기 ( 콘솔창에, 데이터를 출력하기 위해 사용 )
    let stdout = stdout();
    
    // 문자열 변수 만들기
    let message = String::from("Hello fellow Rustaceans!");
    
    // 문자열을 한 문자로 나누고(chars), 그 개수를 세어(count) 변수에 저장
    let width = message.chars().count();

    // 
    let mut writer = BufWriter::new(stdout.lock());
    
    // 출력
    say(message.as_bytes(), width, &mut writer).unwrap();
}

Rust 마스코트 페리스

 

Rust 컴파일러로, 바이너리 생성 & 실행

// hello.rs
fn main() {
  println("Hello World!");
}
# rustc : rust 컴파일러
rustc hello-rust.rs
# 바이너리 파일 실행
./hello

 

Rust 라이브러리 사이트

 

crates.io: Rust Package Registry

 

crates.io

 

 
반응형