From 7ed5e9f25509e1c07ab0e13a777b977ae99b759e Mon Sep 17 00:00:00 2001 From: timofey Date: Sun, 15 Oct 2023 17:39:28 +0000 Subject: [PATCH] shared_is_same_after_clone --- src/func/instances/effect.rs | 2 +- src/func/test_suite.rs | 3 +++ src/func/tests.rs | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/func/instances/effect.rs b/src/func/instances/effect.rs index 27eac1e..04d7483 100644 --- a/src/func/instances/effect.rs +++ b/src/func/instances/effect.rs @@ -22,7 +22,7 @@ pub trait Effect: Send { } /// Value and related metadata. -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Clone)] pub struct WithEffect { pub value: A, pub effect: E, diff --git a/src/func/test_suite.rs b/src/func/test_suite.rs index 49dfa5c..eaf18f1 100644 --- a/src/func/test_suite.rs +++ b/src/func/test_suite.rs @@ -127,5 +127,8 @@ pub fn shared_follows_laws<'a, T: SharedFunctor<'a> + FunctorTestSuite<'a>>() -> T::sample(|pa| { res += shared_is_same_as_original::(move || pa(2)); }); + T::sample(|pa| { + res += shared_is_same_after_clone::(move || pa(2)); + }); res } diff --git a/src/func/tests.rs b/src/func/tests.rs index d110b3f..9509ce4 100644 --- a/src/func/tests.rs +++ b/src/func/tests.rs @@ -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, +) -> R { + let sa = T::share(fa0()); + T::eqr( + "shared same as original", + T::unshare(sa.clone()), + T::unshare(sa), + ) +}