scala.Conversion.scala Maven / Gradle / Ivy
The newest version!
package scala
/** A class for implicit values that can serve as implicit conversions
* The implicit resolution algorithm will act as if there existed
* the additional implicit definition:
*
* def $implicitConversion[T, U](x: T)(c: Conversion[T, U]): U = c(x)
*
* However, the presence of this definition would slow down implicit search since
* its outermost type matches any pair of types. Therefore, implicit search
* contains a special case in `Implicits#discardForView` which emulates the
* conversion in a more efficient way.
*
* Note that this is a SAM class - function literals are automatically converted
* to the `Conversion` values.
*
* Also note that in bootstrapped dotty, `Predef.<:<` should inherit from
* `Conversion`. This would cut the number of special cases in `discardForView`
* from two to one.
*/
@java.lang.FunctionalInterface
abstract class Conversion[-T, +U] extends Function1[T, U]:
def apply(x: T): U
© 2015 - 2025 Weber Informatics LLC | Privacy Policy