shared_is_same_after_clone
This commit is contained in:
parent
807ff5e589
commit
7ed5e9f255
@ -22,7 +22,7 @@ pub trait Effect: Send {
|
||||
}
|
||||
|
||||
/// Value and related metadata.
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
#[derive(Clone)]
|
||||
pub struct WithEffect<A, E> {
|
||||
pub value: A,
|
||||
pub effect: E,
|
||||
|
@ -127,5 +127,8 @@ pub fn shared_follows_laws<'a, T: SharedFunctor<'a> + FunctorTestSuite<'a>>() ->
|
||||
T::sample(|pa| {
|
||||
res += shared_is_same_as_original::<T, _>(move || pa(2));
|
||||
});
|
||||
T::sample(|pa| {
|
||||
res += shared_is_same_after_clone::<T, _>(move || pa(2));
|
||||
});
|
||||
res
|
||||
}
|
||||
|
@ -463,3 +463,18 @@ pub fn shared_is_same_as_original<
|
||||
fa0(),
|
||||
)
|
||||
}
|
||||
|
||||
pub fn shared_is_same_after_clone<
|
||||
'a,
|
||||
T: SharedFunctor<'a> + Eqr<'a>,
|
||||
A: 'a + Send + Sync + Clone + Debug + PartialEq,
|
||||
>(
|
||||
fa0: impl 'a + Fn() -> T::F<A>,
|
||||
) -> R {
|
||||
let sa = T::share(fa0());
|
||||
T::eqr(
|
||||
"shared same as original",
|
||||
T::unshare(sa.clone()),
|
||||
T::unshare(sa),
|
||||
)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user