From ec7fcdc959872d7ba9e1d20fa598a3f95678885b Mon Sep 17 00:00:00 2001 From: John Bobbo Date: Sat, 6 May 2023 14:42:07 -0700 Subject: [PATCH] Remove unneeded calls to `mem::forget` and `mem::replace` in `Option::get_or_insert_with`. --- library/core/src/option.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/library/core/src/option.rs b/library/core/src/option.rs index c38c68e1d58..ec1ef3cf43d 100644 --- a/library/core/src/option.rs +++ b/library/core/src/option.rs @@ -1641,10 +1641,8 @@ impl Option { where F: FnOnce() -> T, { - if let None = *self { - // the compiler isn't smart enough to know that we are not dropping a `T` - // here and wants us to ensure `T` can be dropped at compile time. - mem::forget(mem::replace(self, Some(f()))) + if let None = self { + *self = Some(f()); } // SAFETY: a `None` variant for `self` would have been replaced by a `Some`