diff --git a/akka-stream/src/main/scala/akka/stream/scaladsl/Source.scala b/akka-stream/src/main/scala/akka/stream/scaladsl/Source.scala index 55bd1c21a4..c361f85c3b 100644 --- a/akka-stream/src/main/scala/akka/stream/scaladsl/Source.scala +++ b/akka-stream/src/main/scala/akka/stream/scaladsl/Source.scala @@ -237,14 +237,10 @@ object Source { /** * Create a `Source` that will continually emit the given element. */ - def repeat[T](element: T): Source[T, Unit] = - single(new immutable.Iterable[T] { - override val iterator: Iterator[T] = Iterator.continually(element) - - override def toString: String = "repeat(" + element + ")" - }) - .mapConcat(ConstantFun.scalaIdentityFunction) - .withAttributes(DefaultAttributes.repeat) + def repeat[T](element: T): Source[T, Unit] = { + val next = Some((element, element)) + unfold(element)(_ => next).withAttributes(DefaultAttributes.repeat) + } /** * Create a `Source` that will unfold a value of type `S` into