rust/tests/ui/unsafe-fields/unsafe-fields.stderr
Jack Wrenn 91034adf30 Do not require that unsafe fields lack drop glue
Instead, we adopt the position that introducing an `unsafe` field
itself carries a safety invariant: that if you assign an invariant
to that field weaker than what the field's destructor requires,
you must ensure that field is in a droppable state in your
destructor.

See:
- https://github.com/rust-lang/rfcs/pull/3458#discussion_r1971676100
- https://rust-lang.zulipchat.com/#narrow/channel/213817-t-lang/topic/unsafe.20fields.20RFC/near/502113897
2025-02-28 16:32:06 +00:00

63 lines
2.1 KiB
Plaintext

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 7 previous errors
For more information about this error, try `rustc --explain E0133`.