// Copyright 2015 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. // pretty-expanded FIXME #23616 use std::marker::PhantomData; pub struct Handle(T, I); impl Handle { pub fn get_info(&self) -> &I { let Handle(_, ref info) = *self; info } } pub struct BufferHandle { raw: RawBufferHandle, _marker: PhantomData, } impl BufferHandle { pub fn get_info(&self) -> &String { self.raw.get_info() } } pub type RawBufferHandle = Handle<::Buffer, String>; pub trait Device { type Buffer; } fn main() {}