From a0bc2b233211623192eb04cfa58328e759f591f6 Mon Sep 17 00:00:00 2001 From: CPunisher <1343316114@qq.com> Date: Sat, 12 Oct 2024 22:10:28 +0800 Subject: [PATCH] fix ident --- .../src/plugins/js_loader/resolver.rs | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/crates/rspack_binding_options/src/plugins/js_loader/resolver.rs b/crates/rspack_binding_options/src/plugins/js_loader/resolver.rs index ad2bfeaa6cb..cc273b791eb 100644 --- a/crates/rspack_binding_options/src/plugins/js_loader/resolver.rs +++ b/crates/rspack_binding_options/src/plugins/js_loader/resolver.rs @@ -1,4 +1,7 @@ -use std::sync::{Arc, LazyLock}; +use std::{ + borrow::Cow, + sync::{Arc, LazyLock}, +}; use rspack_collections::{Identifiable, Identifier}; use rspack_core::{ @@ -42,13 +45,17 @@ pub fn serde_error_to_miette( miette!(labels = vec![span], "{msg}").with_source_code(content.clone()) } -static SWC_LOADER_CACHE: LazyLock>>> = +static SWC_LOADER_CACHE: LazyLock, Arc), Arc>>> = LazyLock::new(|| RwLock::new(FxHashMap::default())); pub async fn get_builtin_loader(builtin: &str, options: Option<&str>) -> Result { let options: Arc = options.unwrap_or("{}").into(); if builtin.starts_with(SWC_LOADER_IDENTIFIER) { - if let Some(loader) = SWC_LOADER_CACHE.read().await.get(options.as_ref()) { + if let Some(loader) = SWC_LOADER_CACHE + .read() + .await + .get(&(Cow::Borrowed(builtin), options.clone())) + { return Ok(loader.clone()); } @@ -63,10 +70,10 @@ pub async fn get_builtin_loader(builtin: &str, options: Option<&str>) -> Result< .with_identifier(builtin.into()), ); - SWC_LOADER_CACHE - .write() - .await - .insert(options.to_string(), loader.clone()); + SWC_LOADER_CACHE.write().await.insert( + (Cow::Owned(builtin.to_owned()), options.clone()), + loader.clone(), + ); return Ok(loader); }