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 래퍼 연습문제에서 이를 다루었습니다.
이러한 방법은 타겟 플랫폼의 모든 부분을 사전에 알고 있다는 전제를 깔고 있습니다. 상용 프로젝트에서는 권장하지 않습니다.
좀 더 나은 옵션을 살펴보겠습니다.