Chamando Código Externo
Funções de outras linguagens podem violar as garantias do Rust. Logo, chamá-las é inseguro:
extern "C" { fn abs(input: i32) -> i32; } fn main() { unsafe { // Comportamento indefinido se abs se comportar mal. println!("Valor absoluto de -3 de acordo com C: {}", abs(-3)); } }
Normalmente isso é apenas um problema para funções externas que fazem coisas com ponteiros que podem violar o modelo de memória do Rust, mas em geral qualquer função C pode ter comportamento indefinido sob quaisquer circunstâncias arbitrárias.
O "C"
neste exemplo é o ABI; outros ABIs também estão disponíveis.