From a7e1edb803903e2e6d70bf7b2c8c306d986c2878 Mon Sep 17 00:00:00 2001 From: Jules Ivanic Date: Thu, 12 Dec 2024 22:34:39 +1100 Subject: [PATCH] Optimise `zio.stream.ZStream.repeat` --- streams/shared/src/main/scala/zio/stream/ZStream.scala | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/streams/shared/src/main/scala/zio/stream/ZStream.scala b/streams/shared/src/main/scala/zio/stream/ZStream.scala index 49a1da9e844c..32e85841aed2 100644 --- a/streams/shared/src/main/scala/zio/stream/ZStream.scala +++ b/streams/shared/src/main/scala/zio/stream/ZStream.scala @@ -4923,7 +4923,13 @@ object ZStream extends ZStreamPlatformSpecificConstructors { * Repeats the provided value infinitely. */ def repeat[A](a: => A)(implicit trace: Trace): ZStream[Any, Nothing, A] = - new ZStream(ZChannel.succeed(a).flatMap(a => ZChannel.write(Chunk.single(a)).repeated)) + new ZStream( + ZChannel.suspend { + val a0 = a + val v = Chunk.single(a0) + ZChannel.write(v).repeated + } + ) /** * Repeats the value using the provided schedule.