1
Fork 0

Remove unneeded calls to mem::forget

and `mem::replace` in `Option::get_or_insert_with`.
This commit is contained in:
John Bobbo 2023-05-06 14:42:07 -07:00
parent 905d5a38d6
commit ec7fcdc959
No known key found for this signature in database
GPG key ID: D5B1CA85E46C4709

View file

@ -1641,10 +1641,8 @@ impl<T> Option<T> {
where where
F: FnOnce() -> T, F: FnOnce() -> T,
{ {
if let None = *self { if let None = self {
// the compiler isn't smart enough to know that we are not dropping a `T` *self = Some(f());
// here and wants us to ensure `T` can be dropped at compile time.
mem::forget(mem::replace(self, Some(f())))
} }
// SAFETY: a `None` variant for `self` would have been replaced by a `Some` // SAFETY: a `None` variant for `self` would have been replaced by a `Some`