Взаємодія з C

Rust має повну підтримку зв’язування об’єктних файлів за допомогою угоди про виклики C. Так само ви можете експортувати функції Rust і викликати їх із 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.

Це передбачає повне знання цільової платформи. Не рекомендується для використання.

Далі ми розглянемо кращі варіанти.