extern «C» { fn abs(input: i32) -> i32; } fn main() { unsafe { println!(«Valor absoluto de -3 según C: {}», abs(-3)); } } Cualquier llamada realizada a las funciones expuestas a través del bloque extern «C» debe estar envuelta en unsafe, para garantizar mejor que asuma la responsabilidad adecuada por lo que le envía y recibe de él. Alterar variables estáticas mutables Las variables globales o estáticas en Rust se pueden configurar como mutables, ya que ocupan una dirección de memoria fija. Sin embargo, solo es posible modificar una variable estática mutable dentro de un bloque unsafe. Las carreras de datos son la principal razón por la que necesita unsafe para alterar las variables estáticas mutables. Obtendría resultados impredecibles si permitiera que se modifique la misma variable estática mutable desde diferentes subprocesos. Entonces, si bien puede usar unsafe para realizar dichos cambios, cualquier problema de carrera de datos sería su responsabilidad, no de Rust. En general, Rust no puede evitar por completo las carreras de datos, pero hay que tener doble cuidado al respecto en bloques inseguros.