Llamar a código externo

Es posible que las funciones de otros lenguajes infrinjan las garantías de Rust. Por lo tanto, no es seguro llamarlas:

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

fn main() {
    unsafe {
        // Undefined behavior if abs misbehaves.
        println!("Absolute value of -3 according to C: {}", abs(-3));
    }
}

Esto solo suele suponer un problema para las funciones externas que hacen cosas con punteros que pueden infringir el modelo de memoria de Rust pero, en general, cualquier función C puede tener un comportamiento indefinido bajo cualquier circunstancia arbitraria.

En este ejemplo, "C" es la ABI.; también hay otras ABI disponibles.