Packages

  • package root
    Definition Classes
    root
  • package com
    Definition Classes
    root
  • package softwaremill
    Definition Classes
    com
  • package tagging

    Tag instances with arbitrary types.

    Tag instances with arbitrary types. The tags are usually empty traits. Tags have no runtime overhead and are only used at compile-time for additional type safety.

    For example:

    class Berry()
    
    trait Black
    trait Blue
    
    val berry = new Berry()
    val blackBerry: Berry @@ Black = berry.taggedWith[Black]
    val blueBerry: Berry @@ Blue = berry.taggedWith[Blue]
    
    // compile error: val anotherBlackBerry: Berry @@ Black = blueBerry

    Original idea by Miles Sabin, see: https://gist.github.com/milessabin/89c9b47a91017973a35f

    Definition Classes
    softwaremill
  • AndTagger
  • AnyTypeclassTaggingCompat
  • Tag
  • Tagger
  • TypeclassTaggingCompat

implicit final class Tagger[T] extends AnyVal

Linear Supertypes
AnyVal, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Tagger
  2. AnyVal
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new Tagger(t: T)

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    Any
  2. final def ##(): Int
    Definition Classes
    Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def getClass(): Class[_ <: AnyVal]
    Definition Classes
    AnyVal → Any
  6. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  7. val t: T
  8. def taggedWith[U]: @@[T, U]
  9. def toString(): String
    Definition Classes
    Any

Inherited from AnyVal

Inherited from Any

Ungrouped