Clarify parameter and argument compatibility

pull/516/head
Emmanuel Amoah 3 weeks ago committed by GitHub
parent 95fa2429af
commit b646f1a5aa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -118,7 +118,9 @@ This is a classic use-after-free bug!
Our first instinct might be to blame the `assign` impl, but there's really nothing wrong here.
It shouldn't be surprising that we might want to assign a `T` into a `T`.
The problem is that we cannot assume `&'static str` can still be downgraded into `&'world str` to satisfy `T`, once it's behind a `&mut` reference. This means that `&mut &'static str` **cannot** be a *subtype* of `&mut &'world str`, even if `'static` is a subtype of `'world`.
The problem is that we cannot assume `&'static str` can still be downgraded into `&'world str` to satisfy `T`, once it's behind a `&mut` reference.
This means that `&mut &'static str` **cannot** be a *subtype* of `&mut &'world str`,
even if `'static` is a subtype of `'world`.
Variance is the concept that Rust borrows to define relationships about subtypes through their generic parameters.

Loading…
Cancel
Save