mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-30 20:17:50 +00:00

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
63 lines
2.1 KiB
Plaintext
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`.
|