rust/tests/ui/unsafe-fields/unsafe-fields.stderr

76 lines
2.7 KiB
Plaintext

error[E0740]: field must implement `Copy` or be wrapped in `ManuallyDrop<...>` to be unsafe
--> $DIR/unsafe-fields.rs:20:5
|
LL | unsafe unsafe_noncopy_field: Vec<u32>,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: unsafe fields must not have drop side-effects, which is currently enforced via either `Copy` or `ManuallyDrop<...>`
help: wrap the field type in `ManuallyDrop<...>`
|
LL | unsafe unsafe_noncopy_field: std::mem::ManuallyDrop<Vec<u32>>,
| +++++++++++++++++++++++ +
error[E0133]: use of unsafe field is unsafe and requires unsafe block
--> $DIR/unsafe-fields.rs:15:30
|
LL | let A::WithUnsafeField { unsafe_field, safe_field } = a;
| ^^^^^^^^^^^^ use of unsafe field
|
= note: unsafe fields may carry library invariants
error[E0133]: initializing type with an unsafe field is unsafe and requires unsafe block
--> $DIR/unsafe-fields.rs:43:9
|
LL | / WithUnsafeField {
LL | | unsafe_field: 0,
LL | | safe_field: 0,
LL | | }
| |_________^ initialization of struct with unsafe field
|
= note: unsafe fields may carry library invariants
error[E0133]: use of unsafe field is unsafe and requires unsafe block
--> $DIR/unsafe-fields.rs:80:9
|
LL | self.unsafe_field = 2;
| ^^^^^^^^^^^^^^^^^ use of unsafe field
|
= note: unsafe fields may carry library invariants
error[E0133]: use of unsafe field is unsafe and requires unsafe block
--> $DIR/unsafe-fields.rs:85:9
|
LL | self.unsafe_field
| ^^^^^^^^^^^^^^^^^ use of unsafe field
|
= note: unsafe fields may carry library invariants
error[E0133]: use of unsafe field is unsafe and requires unsafe block
--> $DIR/unsafe-fields.rs:90:10
|
LL | &self.unsafe_field
| ^^^^^^^^^^^^^^^^^ use of unsafe field
|
= note: unsafe fields may carry library invariants
error[E0133]: use of unsafe field is unsafe and requires unsafe block
--> $DIR/unsafe-fields.rs:95:32
|
LL | let Self { safe_field, unsafe_field } = self;
| ^^^^^^^^^^^^ use of unsafe field
|
= note: unsafe fields may carry library invariants
error[E0133]: use of unsafe field is unsafe and requires unsafe block
--> $DIR/unsafe-fields.rs:106:20
|
LL | &raw const self.unsafe_field
| ^^^^^^^^^^^^^^^^^ use of unsafe field
|
= note: unsafe fields may carry library invariants
error: aborting due to 8 previous errors
Some errors have detailed explanations: E0133, E0740.
For more information about an error, try `rustc --explain E0133`.