#![crate_type = "dylib"] #![allow(dead_code)] // `pub` extern fn here is a Rust nameres visibility concept, and should not affect symbol // visibility in the dylib. #[no_mangle] pub extern "C" fn fun1() {} // (Lack of) `pub` for the extern fn here is a Rust nameres visibility concept, and should not // affect symbol visibility in the dylib. #[no_mangle] extern "C" fn fun2() {} // Modules are a Rust nameres concept, and should not affect symbol visibility in the dylib if the // extern fn is nested inside a module. mod foo { #[no_mangle] pub extern "C" fn fun3() {} } // Similarly, the Rust visibility of the containing module is a Rust nameres concept, and should not // affect symbol visibility in the dylib. pub mod bar { #[no_mangle] pub extern "C" fn fun4() {} } // Non-extern `#[no_mangle]` fn should induce a symbol visible in the dylib. #[no_mangle] pub fn fun5() {} // The Rust visibility of the fn should not affect is symbol visibility in the dylib. #[no_mangle] fn fun6() {}