2021-06-20 13:49:08 +00:00
|
|
|
// aux-build: no-mangle-associated-fn.rs
|
|
|
|
// run-pass
|
|
|
|
|
|
|
|
extern crate no_mangle_associated_fn;
|
|
|
|
|
|
|
|
struct Foo;
|
|
|
|
|
|
|
|
impl Foo {
|
|
|
|
#[no_mangle]
|
|
|
|
fn foo() -> u8 {
|
|
|
|
1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-08-07 18:10:57 +00:00
|
|
|
trait Bar {
|
|
|
|
fn qux() -> u8;
|
|
|
|
}
|
|
|
|
|
|
|
|
impl Bar for Foo {
|
|
|
|
#[no_mangle]
|
|
|
|
fn qux() -> u8 {
|
|
|
|
4
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-06-20 13:49:08 +00:00
|
|
|
fn main() {
|
|
|
|
extern "Rust" {
|
|
|
|
fn foo() -> u8;
|
|
|
|
fn bar() -> u8;
|
2021-08-07 18:10:57 +00:00
|
|
|
fn baz() -> u8;
|
|
|
|
fn qux() -> u8;
|
2021-06-20 13:49:08 +00:00
|
|
|
}
|
|
|
|
assert_eq!(unsafe { foo() }, 1);
|
|
|
|
assert_eq!(unsafe { bar() }, 2);
|
2021-08-07 18:10:57 +00:00
|
|
|
assert_eq!(unsafe { baz() }, 3);
|
|
|
|
assert_eq!(unsafe { qux() }, 4);
|
2021-06-20 13:49:08 +00:00
|
|
|
}
|