@@ -25,12 +25,13 @@ package instances
25
25
import scala .collection .immutable .Queue
26
26
import compat .scalaVersionSpecific ._
27
27
28
+ import scala .annotation .nowarn
29
+
28
30
@ suppressUnusedImportWarningForScalaVersionSpecific
29
31
trait QueueInstances extends QueueInstances1 {
30
32
implicit def catsKernelStdOrderForQueue [A : Order ]: Order [Queue [A ]] =
31
33
new QueueOrder [A ]
32
- implicit def catsKernelStdMonoidForQueue [A ]: Monoid [Queue [A ]] =
33
- new QueueMonoid [A ]
34
+ implicit def catsKernelStdMonoidForQueue [A ]: Monoid [Queue [A ]] = QueueMonoid [A ]
34
35
}
35
36
36
37
private [instances] trait QueueInstances1 extends QueueInstances2 {
@@ -68,6 +69,7 @@ class QueueEq[A](implicit ev: Eq[A]) extends Eq[Queue[A]] {
68
69
else StaticMethods .iteratorEq(xs.iterator, ys.iterator)
69
70
}
70
71
72
+ @ deprecated(" Use QueueMonoid.apply, which does not allocate a new instance" , " 2.9.0" )
71
73
class QueueMonoid [A ] extends Monoid [Queue [A ]] {
72
74
def empty : Queue [A ] = Queue .empty[A ]
73
75
def combine (x : Queue [A ], y : Queue [A ]): Queue [A ] = x ++ y
@@ -78,3 +80,10 @@ class QueueMonoid[A] extends Monoid[Queue[A]] {
78
80
override def combineAll (xs : IterableOnce [Queue [A ]]): Queue [A ] =
79
81
StaticMethods .combineAllIterable(Queue .newBuilder[A ], xs)
80
82
}
83
+
84
+ object QueueMonoid {
85
+ @ nowarn(" msg=deprecated" )
86
+ private [this ] val singleton : Monoid [Queue [Any ]] = new QueueMonoid [Any ]
87
+
88
+ def apply [A ]: Monoid [Queue [A ]] = singleton.asInstanceOf [Monoid [Queue [A ]]]
89
+ }
0 commit comments