Skip to content

Commit 1e8e0d8

Browse files
committed
Replace Disabled SyncWriteMode with Option
1 parent f70e206 commit 1e8e0d8

File tree

2 files changed

+10
-12
lines changed

2 files changed

+10
-12
lines changed

cached_proc_macro/src/cached.rs

+7-8
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ use syn::{parse_macro_input, parse_str, Block, Ident, ItemFn, ReturnType, Type};
1010
#[derive(Debug, Default, FromMeta, Eq, PartialEq)]
1111
enum SyncWriteMode {
1212
#[default]
13-
Disabled,
1413
Default,
1514
ByKey,
1615
}
@@ -36,7 +35,7 @@ struct MacroArgs {
3635
#[darling(default)]
3736
option: bool,
3837
#[darling(default)]
39-
sync_writes: SyncWriteMode,
38+
sync_writes: Option<SyncWriteMode>,
4039
#[darling(default)]
4140
with_cached_flag: bool,
4241
#[darling(default)]
@@ -199,7 +198,7 @@ pub fn cached(args: TokenStream, input: TokenStream) -> TokenStream {
199198
_ => panic!("the result and option attributes are mutually exclusive"),
200199
};
201200

202-
if args.result_fallback && args.sync_writes != SyncWriteMode::Disabled {
201+
if args.result_fallback && args.sync_writes.is_some() {
203202
panic!("result_fallback and sync_writes are mutually exclusive");
204203
}
205204

@@ -216,7 +215,7 @@ pub fn cached(args: TokenStream, input: TokenStream) -> TokenStream {
216215
let ty;
217216
if asyncness.is_some() {
218217
lock = match args.sync_writes {
219-
SyncWriteMode::ByKey => quote! {
218+
Some(SyncWriteMode::ByKey) => quote! {
220219
let mut locks = #cache_ident.lock().await;
221220
let lock = locks
222221
.entry(key.clone())
@@ -239,7 +238,7 @@ pub fn cached(args: TokenStream, input: TokenStream) -> TokenStream {
239238
};
240239

241240
ty = match args.sync_writes {
242-
SyncWriteMode::ByKey => quote! {
241+
Some(SyncWriteMode::ByKey) => quote! {
243242
#visibility static #cache_ident: ::cached::once_cell::sync::Lazy<::cached::async_sync::Mutex<std::collections::HashMap<#cache_key_ty, std::sync::Arc<::cached::async_sync::Mutex<#cache_ty>>>>> = ::cached::once_cell::sync::Lazy::new(|| ::cached::async_sync::Mutex::new(std::collections::HashMap::new()));
244243
},
245244
_ => quote! {
@@ -248,7 +247,7 @@ pub fn cached(args: TokenStream, input: TokenStream) -> TokenStream {
248247
};
249248
} else {
250249
lock = match args.sync_writes {
251-
SyncWriteMode::ByKey => quote! {
250+
Some(SyncWriteMode::ByKey) => quote! {
252251
let mut locks = #cache_ident.lock().unwrap();
253252
let lock = locks.entry(key.clone()).or_insert_with(|| std::sync::Arc::new(std::sync::Mutex::new(#cache_create))).clone();
254253
drop(locks);
@@ -268,7 +267,7 @@ pub fn cached(args: TokenStream, input: TokenStream) -> TokenStream {
268267
};
269268

270269
ty = match args.sync_writes {
271-
SyncWriteMode::ByKey => quote! {
270+
Some(SyncWriteMode::ByKey) => quote! {
272271
#visibility static #cache_ident: ::cached::once_cell::sync::Lazy<std::sync::Mutex<std::collections::HashMap<#cache_key_ty, std::sync::Arc<std::sync::Mutex<#cache_ty>>>>> = ::cached::once_cell::sync::Lazy::new(|| std::sync::Mutex::new(std::collections::HashMap::new()));
273272
},
274273
_ => quote! {
@@ -285,7 +284,7 @@ pub fn cached(args: TokenStream, input: TokenStream) -> TokenStream {
285284
#set_cache_and_return
286285
};
287286

288-
let do_set_return_block = if args.sync_writes != SyncWriteMode::Disabled {
287+
let do_set_return_block = if args.sync_writes.is_some() {
289288
quote! {
290289
#lock
291290
if let Some(result) = cache.cache_get(&key) {

cached_proc_macro/src/once.rs

+3-4
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ use syn::{parse_macro_input, Ident, ItemFn, ReturnType};
99
#[derive(Debug, Default, FromMeta)]
1010
enum SyncWriteMode {
1111
#[default]
12-
Disabled,
1312
Default,
1413
}
1514

@@ -20,7 +19,7 @@ struct OnceMacroArgs {
2019
#[darling(default)]
2120
time: Option<u64>,
2221
#[darling(default)]
23-
sync_writes: SyncWriteMode,
22+
sync_writes: Option<SyncWriteMode>,
2423
#[darling(default)]
2524
result: bool,
2625
#[darling(default)]
@@ -228,7 +227,7 @@ pub fn once(args: TokenStream, input: TokenStream) -> TokenStream {
228227
};
229228

230229
let do_set_return_block = match args.sync_writes {
231-
SyncWriteMode::Default => quote! {
230+
Some(SyncWriteMode::Default) => quote! {
232231
#r_lock_return_cache_block
233232
#w_lock
234233
if let Some(result) = &*cached {
@@ -237,7 +236,7 @@ pub fn once(args: TokenStream, input: TokenStream) -> TokenStream {
237236
#function_call
238237
#set_cache_and_return
239238
},
240-
SyncWriteMode::Disabled => quote! {
239+
None => quote! {
241240
#r_lock_return_cache_block
242241
#function_call
243242
#w_lock

0 commit comments

Comments
 (0)