function contract

함수는 시그니처로 약속하고 마지막 표현식으로 값을 돌려준다

매개변수 타입, 반환 타입, 세미콜론 위치를 함께 보면 함수 오류의 대부분을 빠르게 좁힐 수 있습니다.

fn plus_one(x: i32) -> i32 {
  x + 1
}
name

호출할 이름

`fn` 뒤의 이름은 위치보다 스코프 안에 정의되어 있는지가 중요합니다.

parameter

입력의 타입

각 매개변수는 `x: i32`처럼 타입을 반드시 적어야 합니다.

return

돌려줄 타입

`-> i32` 약속은 본문 끝에 실제 `i32` 값이 남아야 지켜집니다.

expression

값이 남는 끝줄

`x + 1`은 표현식이라 함수의 반환값으로 사용됩니다.

statement

값을 버리는 세미콜론

`x + 1;`은 구문이 되어 `()`를 남기므로 반환 타입과 어긋납니다.

early return

일찍 끝내는 경우

`return`을 쓰더라도 함수가 약속한 타입과 같은 값을 내보내야 합니다.