use std::marker::PhantomData; use std::pin::pin; struct CachePadded { value: T } impl CachePadded { fn new(value: T) -> Self { CachePadded:: { value } } } struct QueueHandle { state: PhantomData } struct QueueProxyData { handle: QueueHandle, udata: U, interface: PhantomData, } impl QueueHandle { fn make_data(&self, user_data: U) -> QueueProxyData { QueueProxyData:: { handle: QueueHandle { state: PhantomData }, udata: user_data, interface: PhantomData, } } } // std/sync/mpmc/utils.rs:79: explicit arguments on a struct initializer. #[test] fn cache_padded_explicit_argument() { assert_eq!(CachePadded::new(13u32).value, 13); } // wayland-client/event_queue.rs:619: mixed inferred and explicit generic inputs. #[test] fn queue_proxy_data_explicit_arguments() { let queue: QueueHandle = QueueHandle { state: PhantomData }; let data = queue.make_data::(17u32); assert_eq!(data.udata, 17); } // async_closures.rs:26: pin! expands to a qualified struct initializer. #[test] fn pin_macro_in_generic_body() { fn pinned(value: T) -> T where T: Copy { let value = pin!(value); *value } assert_eq!(pinned(19u32), 19); }