diff --git a/crates/bevy_ecs/src/system/combinator.rs b/crates/bevy_ecs/src/system/combinator.rs
index f97680d93d..2d037eef16 100644
--- a/crates/bevy_ecs/src/system/combinator.rs
+++ b/crates/bevy_ecs/src/system/combinator.rs
@@ -252,6 +252,7 @@ where
}
/// An [`IntoSystem`] creating an instance of [`PipeSystem`].
+#[derive(Clone)]
pub struct IntoPipeSystem {
a: A,
b: B,
@@ -285,17 +286,6 @@ where
}
}
-impl Clone for IntoPipeSystem
-where
- A: Clone,
- B: Clone,
-{
- /// Clone the piped system. The cloned instance must be `.initialize()`d before it can run.
- fn clone(&self) -> Self {
- IntoPipeSystem::new(self.a.clone(), self.b.clone())
- }
-}
-
/// A [`System`] created by piping the output of the first system into the input of the second.
///
/// This can be repeated indefinitely, but system pipes cannot branch: the output is consumed by the receiving system.