| use std::ops::Deref; |
| trait MyTrait: Deref<Target = u32> {} |
| struct MyStruct(u32); |
| impl MyTrait for MyStruct {} |
| impl Deref for MyStruct { |
| type Target = u32; |
| |
| fn deref(&self) -> &Self::Target { |
| &self.0 |
| } |
| } |
| fn get_concrete_value(i: u32) -> MyStruct { |
| MyStruct(i) |
| } |
| fn get_boxed_value(i: u32) -> Box<dyn MyTrait> { |
| Box::new(get_concrete_value(i)) |
| } |
| fn main() { |
| let v = [1, 2, 3] |
| .iter() |
| .map(|i| get_boxed_value(*i)) |
| .collect::<Vec<_>>(); |
| |
| let el = &v[0]; |
| |
| for _ in v { |
| //~^ ERROR cannot move out of `v` because it is borrowed |
| println!("{}", ***el > 0); |
| } |
| } |