// build-pass
#![allow(dead_code)]
#![allow(unused_variables)]
use std::any::TypeId;
use std::rc::Rc;

type Fp<T> = Rc<T>;

struct Engine;

trait Component: 'static {}
impl Component for Engine {}

trait Env {
    fn get_component_type_id(&self, type_id: TypeId) -> Option<Fp<dyn Component>>;
}

impl<'a> dyn Env + 'a {
    fn get_component<T: Component>(&self) -> Option<Fp<T>> {
        let x = self.get_component_type_id(TypeId::of::<T>());
        None
    }
}

trait Figment {
    fn init(&mut self, env: &dyn Env);
}

struct MyFigment;

impl Figment for MyFigment {
    fn init(&mut self, env: &dyn Env) {
        let engine = env.get_component::<Engine>();
    }
}

fn main() {}
