For example a public C function which is not #[no_mangle] is likely that way because the author forgot to include it. On the other hand, a public struct is quite likely to be not intended to be used from C so we don't want to warn about that.
Combinations which should be warned:
pub extern <C style ABI> fn with no #[no_mangle]
#[no_mangle] pub fn with no extern
use of types which are not pointers, function pointers, or paths
But only when it makes sense.
For example a public C function which is not
#[no_mangle]
is likely that way because the author forgot to include it. On the other hand, a public struct is quite likely to be not intended to be used from C so we don't want to warn about that.Combinations which should be warned:
pub extern <C style ABI> fn
with no#[no_mangle]
#[no_mangle] pub fn
with noextern