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.
|
/// Value and related metadata.
|
||||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
#[derive(Clone)]
|
||||||
pub struct WithEffect<A, E> {
|
pub struct WithEffect<A, E> {
|
||||||
pub value: A,
|
pub value: A,
|
||||||
pub effect: E,
|
pub effect: E,
|
||||||
|
@ -127,5 +127,8 @@ pub fn shared_follows_laws<'a, T: SharedFunctor<'a> + FunctorTestSuite<'a>>() ->
|
|||||||
T::sample(|pa| {
|
T::sample(|pa| {
|
||||||
res += shared_is_same_as_original::<T, _>(move || pa(2));
|
res += shared_is_same_as_original::<T, _>(move || pa(2));
|
||||||
});
|
});
|
||||||
|
T::sample(|pa| {
|
||||||
|
res += shared_is_same_after_clone::<T, _>(move || pa(2));
|
||||||
|
});
|
||||||
res
|
res
|
||||||
}
|
}
|
||||||
|
@ -463,3 +463,18 @@ pub fn shared_is_same_as_original<
|
|||||||
fa0(),
|
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