mirror of https://github.com/rust-lang/rust
37 lines
615 B
Rust
37 lines
615 B
Rust
//@ 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());
|
|
}
|