Make init_locking return a reference to the initialized data

This commit is contained in:
Santiago Pastorino 2019-10-30 18:08:53 -03:00
parent a6ac22e7e8
commit 12273cb7f6
No known key found for this signature in database
GPG Key ID: 88C941CDA1D46432
2 changed files with 9 additions and 9 deletions

View File

@ -497,13 +497,15 @@ impl<T> Once<T> {
/// If the value was already initialized the closure is not called and `false` is returned,
/// otherwise if the value from the closure initializes the inner value, `true` is returned
#[inline]
pub fn init_locking<F: FnOnce() -> T>(&self, f: F) -> bool {
let mut lock = self.0.lock();
if lock.is_some() {
return false;
pub fn init_locking<F: FnOnce() -> T>(&self, f: F) -> &T {
{
let mut lock = self.0.lock();
if lock.is_none() {
*lock = Some(f());
}
}
*lock = Some(f());
true
self.borrow()
}
/// Tries to initialize the inner value by calling the closure without ensuring that no-one

View File

@ -1351,9 +1351,7 @@ impl<'a, 'tcx> CrateMetadata {
translated_source_file: local_version,
}
}).collect()
});
self.source_map_import_info.borrow()
})
}
/// Get the `DepNodeIndex` corresponding this crate. The result of this