قابلیت همکاری با C

‏ Rust پشتیبانی کاملی برای link دادن object fileهایی با یک فراخوانی C دارد. به طور مشابه، می توانید توابع Rust را export کرده و آنها را از C فراخوانی کنید.

در صورت تمایل می‌توانید این کار را دستی انجام دهید:

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

fn main() {
    let x = -42;
    // SAFETY: `abs` doesn't have any safety requirements.
    let abs_x = unsafe { abs(x) };
    println!("{x}, {abs_x}");
}

ما قبلاً این را در تمرین Safe FFI Wrapper دیدیم.

این مستلزم آگاهی کامل از پلتفرم هدف است و برای production توصیه نمی‌شود.

در ادامه گزینه‌های بهتر را بررسی خواهیم کرد.