Thinking Different




Rust 함수

Rust 에서 함수 선언은 fn 입니다.

 

메인 함수도 마찬가지로 fn으로 되어 있죠

fn main() {
}

 

 

Rust 의 함수 구성은 다음과 같습니다.

fn 함수명(매개변수명: 자료형, ....) -> 리턴자료형 {
	...
    // 리턴값은 ; 을 붙이지 않음
    x
}


// 예제 함수
fn add(a: i32, b: i32) -> i32 {
   a + b
}

 

함수 구성에서 매개변수를 선언하게 되면 반드시 자료형은 무조건 작성해야 됩니다. 

또한 리턴 값에는 세미콜론( ; ) 을 붙이지 않습니다.

 

 

 

간단한 예제로 함수 편을 마무리 하도록 하겠습니다.

 

fn add(a: i32, b: i32, c: i32) -> i32
{
    a + b * c
}

fn main()
{
    hello();

    // 3개의 변수 선언 모두 i32 타입으로 선언되는 다양한 방법을 보여주기 위함
    let a = 2_i32;
    let b: i32 = 3;
    let c = 5i32;
    
    println!("{} + ({} x {}) = {}", a, b, c, add(a, b, c));
}

fn hello()
{
    println!("Hello Rust World!");
}



// ------  출력 결과  ------ //

Hello Rust World!
2 + (3 x 5) = 17

 

 

Tuple 을 활용한 함수 사용 방법 예제

fn main()
{
    let str = String::from("Hello");
    
    // tuple 형식으로 반환 받는 방법
    let (len, s) = data(str);
    
    println!("{}, {}", len, s);
}

// tuple 리턴 방법 
fn data(s: String) -> (usize, String)
{
    // 문자열 길이와, 문자열을 리턴
    // 참조를 사용하는 방법으로 변경하여야 리소스와 성능에 무리가지 않음
    (s.len(), s)
}