Skip to content

Commit 0d2bab3

Browse files
committed
update #131: Rename feature to dashmap and change implementation.
1 parent 7b065db commit 0d2bab3

File tree

2 files changed

+23
-24
lines changed

2 files changed

+23
-24
lines changed

i18n-embed-fl/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,5 @@ pretty_assertions = { workspace = true }
3434
rust-embed = { workspace = true }
3535

3636
[features]
37-
# Enables more performant version of the crate. May download extra dependencies.
38-
performance = ["dep:dashmap"]
37+
# Uses dashmap implementation for `fl!()` macro lookups.
38+
dashmap = ["dep:dashmap"]

i18n-embed-fl/src/lib.rs

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,11 @@ use std::{
1010
sync::OnceLock,
1111
};
1212

13-
#[cfg(not(feature = "performance"))]
13+
#[cfg(feature = "dashmap")]
14+
use dashmap::mapref::one::Ref;
15+
#[cfg(not(feature = "dashmap"))]
1416
use std::sync::{Arc, RwLock};
1517

16-
#[cfg(feature = "performance")]
17-
use dashmap::{mapref::one::Ref, DashMap, Entry};
18-
1918
use syn::{parse::Parse, parse_macro_input, spanned::Spanned};
2019
use unic_langid::LanguageIdentifier;
2120

@@ -174,23 +173,37 @@ struct DomainSpecificData {
174173

175174
#[derive(Default)]
176175
struct DomainsMap {
177-
#[cfg(not(feature = "performance"))]
176+
#[cfg(not(feature = "dashmap"))]
178177
map: RwLock<HashMap<String, Arc<DomainSpecificData>>>,
179178

180-
#[cfg(feature = "performance")]
179+
#[cfg(feature = "dashmap")]
181180
map: dashmap::DashMap<String, DomainSpecificData>,
182181
}
183182

183+
#[cfg(feature = "dashmap")]
184+
impl DomainsMap {
185+
fn get(&self, domain: &String) -> Option<Ref<String, DomainSpecificData>> {
186+
self.map.get(domain)
187+
}
188+
189+
fn entry_or_insert(
190+
&self,
191+
domain: &String,
192+
data: DomainSpecificData,
193+
) -> Ref<String, DomainSpecificData> {
194+
self.map.entry(domain.clone()).or_insert(data).downgrade()
195+
}
196+
}
197+
198+
#[cfg(not(feature = "dashmap"))]
184199
impl DomainsMap {
185-
#[cfg(not(feature = "performance"))]
186200
fn get(&self, domain: &String) -> Option<Arc<DomainSpecificData>> {
187201
match self.map.read().unwrap().get(domain) {
188202
None => None,
189203
Some(data) => Some(data.clone()),
190204
}
191205
}
192206

193-
#[cfg(not(feature = "performance"))]
194207
fn entry_or_insert(
195208
&self,
196209
domain: &String,
@@ -203,20 +216,6 @@ impl DomainsMap {
203216
.or_insert(Arc::new(data))
204217
.clone()
205218
}
206-
207-
#[cfg(feature = "performance")]
208-
fn get(&self, domain: &String) -> Option<Ref<String, DomainSpecificData>> {
209-
self.map.get(domain)
210-
}
211-
212-
#[cfg(feature = "performance")]
213-
fn entry_or_insert(
214-
&self,
215-
domain: &String,
216-
data: DomainSpecificData,
217-
) -> Ref<String, DomainSpecificData> {
218-
self.map.entry(domain.clone()).or_insert(data).downgrade()
219-
}
220219
}
221220

222221
fn domains() -> &'static DomainsMap {

0 commit comments

Comments
 (0)