Add update method to the atomic version of integer like types
This commit is contained in:
parent
c08cd16e3d
commit
f708aca254
|
|
@ -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
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue