본문 바로가기

Rust

데이터 타입, 함수

1. 데이터 타입

데이터 타입은

i8 ~ i128, u8 ~ u128 , isize, usize가 존재

 

bool 타입이 존재하며

 

char 타입이 특이하게도 32비트 크기로 유니코드를 지원하는 타입이다.

 

tuple과 배열을 지원한다.

 

튜플의 경우 접근시 x = (1, 2, 3) 일 때 x.0, x.1, x.2 이런식으로 . 을 이용하여 접근한다.

 

배열의 경우 a[i32; 5] 이런식으로 선언되어있으면 i32 타입의 5개 숫자를 저장하고 있다는 뜻이다.

 

이 외의 타입에 대하여 C, Java, python 등의 언어들과 크게 다른 점은 없다.

 

2. 함수

러스트의 함수 선언은 fn 키워드를 사용한다.

러스트의 cargo는 main.rs의 fn main () 함수가 존재해야 컴파일 및 빌드가 가능하다.

이는 cargo가 main.rs를 빌드를 진행할 때의 실행파일들에 대한 루트로 보기 때문에 실행파일 취급을 받는 main.rs에는 fn main 함수가 반드시 필요하다.

 

함수를 선언하고 사용할 때 매개변수에는 타입을 반드시 명시해야 한다 타입 명시는 fn func(x: i32) 처럼 : 을 이용하여 명시한다.

 

러스트는 expression 기반의 언어이다.

statement 는 어떤 동작을 수행하고 값을 반환하지 않는 명령이고 expression은 결과값을 평가? 한다. 결과값을 가진다고 보면 된다.

expression은 statement의 일부가 될 수 있다.

 


러스트의 함수에서 반환되는 expression은 종결표현인 ; 을 사용하지 않는다. ; 이 붙으면 statement가 된다.

러스트의 함수들은 암묵적으로 마지막에 작성된 ; 이 없는 expression을 반환 값으로 본다.

만약 ; 이 없는 expression 이후 statement가 더 작성되어 있다면 컴파일 에러가 발생한다.

 

러스트 함수의 반환값은 fn func() -> i32 이런식으로 -> 를 이용하여 반환 타입을 명시하는 방식이다.

 

return 키워드와 값을 지정하여 미리 반환하는 것도 가능하다.

 

만약 함수의 마지막이 statement로 종료되면 해당 함수의 반환 값은 () 으로 unit이 된다. (None이라는 의미)

러스트는 expression 중심 언어이기에 각 코드라인 별로 평가를 진행하여 결과값을 갖는데 statement인 경우 () 을 해당 코드라인의 결과값으로 본다. ( ; 의 의미가 해당 코드라인을 statement로 보고 결과값을 () 로 버리라는 의미인 것)

만약 코드 라인에 ; 이 없다면 해당 라인을 결과값을 가지는 코드라인으로 보고 가지는 결과값을 반환하도록 만든다. 즉, 해당 영역의 반환값으로 본다는 얘기 (함수, { } 블럭 등에서 )

 

이는 함수의 반환값이 () 으로 고정되어있는 경우 ()을 반환하는 함수를 마지막에 호출하여 사용하면 ; 을 붙이지 않아도 정상 작동함을 의미하기도 한다.

하지만 코드의 가독성을 위해서는 해당 함수, 코드라인의 종료를 알리기 위해 ; 을 붙이는게 좋다.

 

옳바른 함수 선언 및 사용 예시

fn main() {
    let x = plus(5);

    println!("The value of x is: {x}");
}

fn plus_five(x: i32) -> i32 {
    x + 5
}

 

 

 

'Rust' 카테고리의 다른 글

구조체 (struct), 약간의 메크로 얘기  (0) 2026.01.05
소유권 (Ownership)  (0) 2026.01.04
조건, 반복문  (0) 2026.01.04
Crate와 Library  (0) 2026.01.02
Rust 시작하기  (0) 2026.01.01