C와의 상호운용성

러스트는 C 호출규약을 따르는 오브젝트 파일과 링킹할 수 있습니다. 또한, 반대로 러스트 함수를 내보내서 C에서 호출 할 수 도 있습니다.

원한다면 아래와 같이 수동으로 코딩할 수 있습니다:

extern "C" {
    fn abs(x: i32) -> i32;
}

fn main() {
    let x = -42;
    let abs_x = unsafe { abs(x) };
    println!("{x}, {abs_x}");
}

우리는 이미 Safe FFI 래퍼 연습문제에서 이를 다루었습니다.

이러한 방법은 타겟 플랫폼의 모든 부분을 사전에 알고 있다는 전제를 깔고 있습니다. 상용 프로젝트에서는 권장하지 않습니다.

좀 더 나은 옵션을 살펴보겠습니다.