From ae8b69a585fa89aba8a673df4aaed819934b9913 Mon Sep 17 00:00:00 2001 From: Chris Twiner Date: Wed, 20 Mar 2024 19:40:07 +0100 Subject: [PATCH] #804 - encoding for Set derivatives as well - test build --- dataset/src/main/scala/frameless/TypedEncoder.scala | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/dataset/src/main/scala/frameless/TypedEncoder.scala b/dataset/src/main/scala/frameless/TypedEncoder.scala index f6f9b2e0..312bd019 100644 --- a/dataset/src/main/scala/frameless/TypedEncoder.scala +++ b/dataset/src/main/scala/frameless/TypedEncoder.scala @@ -17,7 +17,8 @@ import shapeless._ import shapeless.ops.hlist.IsHCons import scala.collection.generic.CanBuildFrom -import scala.collection.immutable.TreeSet +import scala.collection.immutable.HashSet.HashTrieSet +import scala.collection.immutable.{ListSet, TreeSet} abstract class TypedEncoder[T]( implicit @@ -497,7 +498,7 @@ object TypedEncoder { /** * Per #804 - when MapObjects is used in interpreted mode the type returned is Seq, not the derived type used in compilation * - * This type class offers extensible conversion for more specific types. By default Seq, List and Vector are supported. + * This type class offers extensible conversion for more specific types. By default Seq, List and Vector for Seq's and Set, TreeSet and HashTrieSet are supported. * * @tparam C */ @@ -521,6 +522,12 @@ object TypedEncoder { implicit def setToTreeSet[Y](implicit cbf: CanBuildFrom[Nothing, Y, TreeSet[Y]]) = new CollectionConversion[Set, TreeSet, Y] { override def convert(c: Set[Y]): TreeSet[Y] = c.to[TreeSet] } + implicit def setToListSet[Y](implicit cbf: CanBuildFrom[Nothing, Y, ListSet[Y]]) = new CollectionConversion[Set, ListSet, Y] { + override def convert(c: Set[Y]): ListSet[Y] = c.to[ListSet] + } + implicit def setToTrieSet[Y](implicit cbf: CanBuildFrom[Nothing, Y, HashTrieSet[Y]]) = new CollectionConversion[Set, HashTrieSet, Y] { + override def convert(c: Set[Y]): HashTrieSet[Y] = c.to[HashTrieSet] + } } implicit def seqEncoder[C[X] <: Seq[X], T](