diff options
Diffstat (limited to 'compiler/rustc_interface/src/queries.rs')
| -rw-r--r-- | compiler/rustc_interface/src/queries.rs | 6 |
1 files changed, 1 insertions, 5 deletions
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<T> { impl<T> Query<T> { fn compute<F: FnOnce() -> Result<T>>(&self, f: F) -> Result<&Query<T>> { - 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 |
