قابلیت همکاری با 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 توصیه نمیشود.
در ادامه گزینههای بهتر را بررسی خواهیم کرد.