
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
- 502113897
62 lines
2.1 KiB
Text
62 lines
2.1 KiB
Text
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`.
|