From 94470f4efd2ec0786dd1f201e9ea84651b4bb0d0 Mon Sep 17 00:00:00 2001 From: Maybe Waffle Date: Wed, 16 Nov 2022 21:58:58 +0000 Subject: Use `as_deref` in compiler (but only where it makes sense) --- compiler/rustc_interface/src/queries.rs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'compiler/rustc_interface/src/queries.rs') diff --git a/compiler/rustc_interface/src/queries.rs b/compiler/rustc_interface/src/queries.rs index 91d180e1eb7..fc0b11183f7 100644 --- a/compiler/rustc_interface/src/queries.rs +++ b/compiler/rustc_interface/src/queries.rs @@ -33,11 +33,7 @@ pub struct Query { impl Query { fn compute Result>(&self, f: F) -> Result<&Query> { - let mut result = self.result.borrow_mut(); - if result.is_none() { - *result = Some(f()); - } - result.as_ref().unwrap().as_ref().map(|_| self).map_err(|err| *err) + self.result.borrow_mut().get_or_insert_with(f).as_ref().map(|_| self).map_err(|&err| err) } /// Takes ownership of the query result. Further attempts to take or peek the query -- cgit 1.4.1-3-g733a5