error[E0382]: use of moved value: `foo.x` --> $DIR/fields-move.rs:28:9 | LL | $foo.x //~ ERROR use of moved value: `foo.x` | ^^^^^^ value used here after move ... LL | assert_two_copies(copy_modern!(foo), foo.x); //~ ERROR use of moved value: `foo.x` | ----- value moved here LL | assert_two_copies(copy_legacy!(foo), foo.x); //~ ERROR use of moved value: `foo.x` | ----------------- in this macro invocation | = note: move occurs because `foo.x` has type `NonCopy`, which does not implement the `Copy` trait error[E0382]: use of moved value: `foo.x` --> $DIR/fields-move.rs:38:42 | LL | $foo.x | ------ value moved here ... LL | assert_two_copies(copy_modern!(foo), foo.x); //~ ERROR use of moved value: `foo.x` | ^^^^^ value used here after move | = note: move occurs because `foo.x` has type `NonCopy`, which does not implement the `Copy` trait error[E0382]: use of moved value: `foo.x` --> $DIR/fields-move.rs:39:42 | LL | $foo.x //~ ERROR use of moved value: `foo.x` | ------ value moved here ... LL | assert_two_copies(copy_legacy!(foo), foo.x); //~ ERROR use of moved value: `foo.x` | ^^^^^ value used here after move | = note: move occurs because `foo.x` has type `NonCopy`, which does not implement the `Copy` trait error: aborting due to 3 previous errors For more information about this error, try `rustc --explain E0382`.