| //@ check-pass | |
| //@ compile-flags: -Zunpretty=expanded | |
| #![feature(derive_smart_pointer)] | |
| use std::marker::SmartPointer; | |
| pub trait MyTrait<T: ?Sized> {} | |
| #[derive(SmartPointer)] | |
| #[repr(transparent)] | |
| struct MyPointer<'a, #[pointee] T: ?Sized> { | |
| ptr: &'a T, | |
| } | |
| #[derive(core::marker::SmartPointer)] | |
| #[repr(transparent)] | |
| pub struct MyPointer2<'a, Y, Z: MyTrait<T>, #[pointee] T: ?Sized + MyTrait<T>, X: MyTrait<T> = ()> | |
| where | |
| Y: MyTrait<T>, | |
| { | |
| data: &'a mut T, | |
| x: core::marker::PhantomData<X>, | |
| } | |
| #[derive(SmartPointer)] | |
| #[repr(transparent)] | |
| struct MyPointerWithoutPointee<'a, T: ?Sized> { | |
| ptr: &'a T, | |
| } |