Add update method to the atomic version of integer like types

This commit is contained in:
Chen Chengjun 2026-07-15 06:36:41 +00:00 committed by Ruihan Li
parent c08cd16e3d
commit f708aca254
1 changed files with 21 additions and 0 deletions

View File

@ -197,6 +197,25 @@ pub fn define_atomic_version_of_integer_like_type(input: TokenStream) -> TokenSt
.map_err(|val| val.#from_integer)
}
};
let fn_update = quote! {
pub fn update<F>(
&self,
set_order: core::sync::atomic::Ordering,
fetch_order: core::sync::atomic::Ordering,
mut f: F
) -> #integer_like_type
where
F: FnMut(#integer_like_type) -> #integer_like_type,
{
self.0
.update(
set_order,
fetch_order,
|old| f(old.#from_integer).into()
)
.#from_integer
}
};
let expanded = quote! {
#item
@ -213,6 +232,8 @@ pub fn define_atomic_version_of_integer_like_type(input: TokenStream) -> TokenSt
#fn_compare_exchange
#fn_fetch_update
#fn_update
}
};