The `DispatchFromDyn` trait currently can only be implemented for builtin pointer types and structs that are newtype wrappers around them — that is, the struct must have only one field (except for`PhantomData`), and that field must itself implement `DispatchFromDyn`. Examples: ``` #![feature(dispatch_from_dyn, unsize)] use std::{ marker::Unsize, ops::DispatchFromDyn, }; struct Ptr(*const T); impl DispatchFromDyn> for Ptr where T: Unsize, {} ``` ``` #![feature(dispatch_from_dyn)] use std::{ ops::DispatchFromDyn, marker::PhantomData, }; struct Wrapper { ptr: T, _phantom: PhantomData<()>, } impl DispatchFromDyn> for Wrapper where T: DispatchFromDyn, {} ``` Example of illegal `DispatchFromDyn` implementation (illegal because of extra field) ```compile-fail,E0378 #![feature(dispatch_from_dyn)] use std::ops::DispatchFromDyn; struct WrapperExtraField { ptr: T, extra_stuff: i32, } impl DispatchFromDyn> for WrapperExtraField where T: DispatchFromDyn, {} ```