//@ run-pass | |
#![allow(unused_variables)] | |
use std::marker::PhantomData; | |
struct TheType<T> { | |
t: PhantomData<T> | |
} | |
pub trait TheTrait { | |
type TheAssociatedType; | |
} | |
impl TheTrait for () { | |
type TheAssociatedType = (); | |
} | |
pub trait Shape<P: TheTrait> { | |
fn doit(&self) { | |
} | |
} | |
impl<P: TheTrait> Shape<P> for TheType<P::TheAssociatedType> { | |
} | |
fn main() { | |
let ball = TheType { t: PhantomData }; | |
let handle: &dyn Shape<()> = &ball; | |
} |