Improve temporary lifetimes rules in readme

Co-Authored-By: MaikKlein <maikklein@googlemail.com>
This commit is contained in:
Benjamin Saunders 2019-03-22 11:00:56 +01:00 committed by GitHub
parent d6ba3f9a16
commit c1b540ac96
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -110,7 +110,7 @@ impl<'a> DeviceCreateInfoBuilder<'a> {
Every reference has to live as long as the builder itself. Builders implement `Deref` targeting their corresponding Vulkan struct, so references to builders can be passed directly
to Vulkan functions.
Calling `.build()` will **discard** that lifetime because Vulkan structs use raw pointers internally. This should be avoided as much as possible because this can easily lead to dangling pointers. If `.build()` has to be called, it should be called as late as possible. The reason for this is that the lifetime of [temporaries](https://doc.rust-lang.org/reference/expressions.html#temporary-lifetimes) will be extended to the enclosing block.
Calling `.build()` will **discard** that lifetime because Vulkan structs use raw pointers internally. This should be avoided as much as possible because this can easily lead to dangling pointers. If `.build()` has to be called, it should be called as late as possible. [Lifetimes of temporaries](https://doc.rust-lang.org/reference/expressions.html#temporary-lifetimes) are extended to the enclosing statement, ensuring they are valid for the duration of a Vulkan call occurring in the same statement.
### Pointer chains