4 pub struct FunnyPointer(dyn Empty);
14 pub fn new() -> Self {
15 Meta { drop_fn: |_| {}, size: 0, align: 1 }
20 pub struct FatPointer {
22 pub vtable: *const (),
26 pub unsafe fn from_data_ptr(data: &String, ptr: *const Meta) -> &Self {
27 let obj = FatPointer {
28 data: data as *const _ as *const (),
29 vtable: ptr as *const _ as *const (),
31 let obj = std::mem::transmute::<FatPointer, *mut FunnyPointer>(obj); //~ ERROR: expected a vtable pointer
38 let meta = Meta::new();
39 let hello = "hello".to_string();
40 let _raw: &FunnyPointer = FunnyPointer::from_data_ptr(&hello, &meta as *const _);