Update incorrect error code docs
This commit is contained in:
parent
21ddf4d903
commit
9e2ee322e8
@ -1,5 +1,4 @@
|
||||
A type with a `Drop` implementation was destructured when trying to initialize
|
||||
a static item.
|
||||
A value with a custom `Drop` implementation may be dropped during const-eval.
|
||||
|
||||
Erroneous code example:
|
||||
|
||||
@ -16,13 +15,14 @@ struct Foo {
|
||||
field1: DropType,
|
||||
}
|
||||
|
||||
static FOO: Foo = Foo { ..Foo { field1: DropType::A } }; // error!
|
||||
static FOO: Foo = Foo { field1: (DropType::A, DropType::A).1 }; // error!
|
||||
```
|
||||
|
||||
The problem here is that if the given type or one of its fields implements the
|
||||
`Drop` trait, this `Drop` implementation cannot be called during the static
|
||||
type initialization which might cause a memory leak. To prevent this issue,
|
||||
you need to instantiate all the static type's fields by hand.
|
||||
`Drop` trait, this `Drop` implementation cannot be called within a const
|
||||
context since it may run arbitrary, non-const-checked code. To prevent this
|
||||
issue, ensure all values with custom a custom `Drop` implementation escape the
|
||||
initializer.
|
||||
|
||||
```
|
||||
enum DropType {
|
||||
|
Loading…
x
Reference in New Issue
Block a user