#![cfg(feature = "weak_default")]
#![cfg_attr(feature = "weak_default", feature(linkage))]
use crate_interface::*;
#[def_interface]
#[allow(dead_code)]
trait DefaultMethodIf {
fn default_method() -> u32 {
42
}
fn default_with_args(a: u32, b: u32) -> u32 {
a + b
}
fn required_method() -> u32;
}
struct PartialImpl;
#[impl_interface]
impl DefaultMethodIf for PartialImpl {
fn required_method() -> u32 {
100
}
}
#[test]
fn test_weak_default_methods() {
assert_eq!(call_interface!(DefaultMethodIf::required_method), 100);
assert_eq!(call_interface!(DefaultMethodIf::default_method), 42);
assert_eq!(
call_interface!(DefaultMethodIf::default_with_args, 10, 20),
30
);
}