Name mangling transforms function and type names into unique symbol names by adding implementation information. In Rust, this helps avoid symbol collisions. For C linkage, `#[no_mangle]` disables the transformation so an exported function keeps the name C expects. section 3.2.2
Listing 3.6 Rust solve function that can be exported as compatible with C
#[no_mangle]
pub extern "C" fn solve(
line: *const c_char, solution: *mut c_int) -> c_int {
0
}
This Rust `solve` declaration shows `#[no_mangle]` alongside the visibility and calling-convention annotations used for C linkage. section 3.2.2


