blob: 680196fbb92f644573259277bc92ade071f64398 [file] [log] [blame]
// run-pass
use {
std::{
rc::Rc,
sync::Arc,
},
};
#[derive(Default)]
struct Ty;
trait Trait {
fn receive_trait(self: &Arc<Rc<Box<Self>>>) -> u32;
}
const TRAIT_MAGIC: u32 = 42;
const INHERENT_MAGIC: u32 = 1995;
impl Trait for Ty {
fn receive_trait(self: &Arc<Rc<Box<Self>>>) -> u32 {
TRAIT_MAGIC
}
}
impl Ty {
fn receive_inherent(self: &Arc<Rc<Box<Self>>>) -> u32 {
INHERENT_MAGIC
}
}
fn main() {
let ty = <Arc<Rc<Box<Ty>>>>::default();
assert_eq!(TRAIT_MAGIC, ty.receive_trait());
assert_eq!(INHERENT_MAGIC, ty.receive_inherent());
}