Имеет различный импорт проблематично c, потому что это означает, что у вас есть разные источники (и вам нужно их поддерживать). Я думаю, что обеспечение отсутствующей реализации библиотеки в ее собственном оригинальном пакете будет лучшим решением.
//main/scala-2.13/com/dongxiguo/fastring/Fastring/Implicits.scala
package com.dongxiguo.fastring.Fastring
object Implicits {
//your implementation of fast"Something"
}
Пока она находится в папке scala-2.13
, она будет скомпилирована и использована только для scala -2.13.
Вам также понадобятся разные зависимости для версий 2.12 и 2.13:
libraryDependencies ++= {
CrossVersion.partialVersion(scalaVersion.value) match {
case Some((2, 12)) => Seq("com.dongxiguo" %% "fastring" % "1.0.0")
case Some((2, 13)) => Seq()
case _ => Seq()
}
}
У вас будет такая же реализация Lib
без каких-либо изменений для scala 2.13 и когда будет выпущена fastring
для новой версии scala Вы просто удалите эти части.
Вы также можете создать свой собственный прокси-объект, который будет иметь различные реализации для 2.12 и 2.13 в mycompat.Implicits._
.
//main/scala-2.13/mycompat/Implicits.scala
package com.mycompat
object Implicits { /* proxy to fast"Something" from fastring library */ }
//main/scala-2.12/mycompat/Implicits.scala
package com.mycompat
object Implicits { /* your implementation of fast"Something" */ }
Это тоже хорошая идея.