diff --git a/crates/bevy_asset/src/asset_server.rs b/crates/bevy_asset/src/asset_server.rs index 2810b03b86..d5a331909d 100644 --- a/crates/bevy_asset/src/asset_server.rs +++ b/crates/bevy_asset/src/asset_server.rs @@ -134,11 +134,13 @@ impl AssetServer { &self, extension: &str, ) -> Result>, AssetServerError> { - self.server - .extension_to_loader_index - .read() - .get(extension) - .map(|index| self.server.loaders.read()[*index].clone()) + let index = { + // scope map to drop lock as soon as possible + let map = self.server.extension_to_loader_index.read(); + map.get(extension).copied() + }; + index + .map(|index| self.server.loaders.read()[index].clone()) .ok_or_else(|| AssetServerError::MissingAssetLoader { extensions: vec![extension.to_string()], })