|  | // Forbid assignment into a dynamically sized type. | 
|  |  | 
|  | struct Fat<T: ?Sized> { | 
|  | f1: isize, | 
|  | f2: &'static str, | 
|  | ptr: T | 
|  | } | 
|  |  | 
|  | #[derive(PartialEq,Eq)] | 
|  | struct Bar; | 
|  |  | 
|  | #[derive(PartialEq,Eq)] | 
|  | struct Bar1 { | 
|  | f: isize | 
|  | } | 
|  |  | 
|  | trait ToBar { | 
|  | fn to_bar(&self) -> Bar; | 
|  | fn to_val(&self) -> isize; | 
|  | } | 
|  |  | 
|  | impl ToBar for Bar1 { | 
|  | fn to_bar(&self) -> Bar { | 
|  | Bar | 
|  | } | 
|  | fn to_val(&self) -> isize { | 
|  | self.f | 
|  | } | 
|  | } | 
|  |  | 
|  | pub fn main() { | 
|  | // Assignment. | 
|  | let f5: &mut Fat<dyn ToBar> = &mut Fat { f1: 5, f2: "some str", ptr: Bar1 {f :42} }; | 
|  | let z: Box<dyn ToBar> = Box::new(Bar1 {f: 36}); | 
|  | f5.ptr = *z; | 
|  | //~^ ERROR the size for values of type | 
|  |  | 
|  | } |