최대 1 분 소요

개요

  • 반환 시 표현식(구문과는 다르게 세미 콜론이 없는) 혹은 return 사용
  • 함수 포인터
    • fn 타입


예제 - 개요

  • 코드

        fn f1() {
            println!("f1 call");
        }

        fn f2(i: i32) {
            println!("f2 call : {}", i);
        }

        fn f3() -> i32 {
            1
        }

        fn f4() -> i32 {
            return 1;
        }

        fn main() {
            f1();
            f2(1);
            println!("{}", f3());
            println!("{}", f4());
        }
  • 실행 결과

        f1 call
        f2 call : 1
        1
        1


예제 - 함수 포인터

  • 코드

        fn func1(i: i32) -> String {
            i.to_string()
        }

        fn func2(f: fn(i32) -> String, i: i32) {
            println!("{}", f(i));
        }

        fn func3(f: fn(i32) -> String) -> fn(i32) -> String {
            f
        }

        fn main() {
            func2(func1, 1);
            func2(func1, 2);

            println!("{}", func3(func1)(3));
        }
  • 실행 결과

        1
        2
        3