kantan.codecs.resource

ResourceIterator

trait ResourceIterator[+A] extends TraversableOnce[A] with java.io.Closeable

Offers iterator-like access to IO resources.

For the most part, values of type ResourceIterator can be considered as iterators, with a few improvements.

First, they have a ResourceIterator.close()* method, which allows you to release the underlying resource when needed. This is fairly important and part of the reason why working with Source.getLines can be so aggravating.

Second, ResourceIterator.close()* is mostly not needed: whenever an IO error occurs or the underlying resource is empty, it will be closed automatically. Provided you intend to read the whole resource, you never need to explicitly close it. This covers non-obvious cases such as filtering or dropping elements.

You should be able to express most common causes for not reading the entire stream through standard combinators. For example, "take the first n elements" is take(n), or "take all odd elements" is filter(_ % 2 == 0). This allows you to ignore the fact that the underlying resource needs to be closed. Should you ever find youself in a situation when you just want to stop, however, ResourceIterator.close()* is available.

Self Type
ResourceIterator[A]
Annotations
@SuppressWarnings()
Linear Supertypes
java.io.Closeable, AutoCloseable, TraversableOnce[A], GenTraversableOnce[A], AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. ResourceIterator
  2. Closeable
  3. AutoCloseable
  4. TraversableOnce
  5. GenTraversableOnce
  6. AnyRef
  7. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def checkNext: Boolean

    Checks whether there are still elements to read in the underlying resource.

    Checks whether there are still elements to read in the underlying resource.

    This method must be pure: it's expected not to have side effects and never to throw exceptions.

    Attributes
    protected
  2. abstract def readNext(): A

    Reads the next element in the underlying resource

    Reads the next element in the underlying resource

    This method is by definition side-effecting and allowed to throw exceptions.

    Attributes
    protected
  3. abstract def release(): Unit

    Releases the underlying resource.

    Releases the underlying resource.

    While this method is side-effecting and allowed to throw exceptions, the current implementation will simply swallow them.

    Attributes
    protected

Concrete Value Members

  1. final def !=(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. def /:[B](z: B)(op: (B, A) ⇒ B): B

    Definition Classes
    TraversableOnce → GenTraversableOnce
  5. def :\[B](z: B)(op: (A, B) ⇒ B): B

    Definition Classes
    TraversableOnce → GenTraversableOnce
  6. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  7. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  8. def addString(b: StringBuilder): StringBuilder

    Definition Classes
    TraversableOnce
  9. def addString(b: StringBuilder, sep: String): StringBuilder

    Definition Classes
    TraversableOnce
  10. def addString(b: StringBuilder, start: String, sep: String, end: String): StringBuilder

    Definition Classes
    TraversableOnce
  11. def aggregate[B](z: B)(seqop: (B, A) ⇒ B, combop: (B, B) ⇒ B): B

    Definition Classes
    TraversableOnce → GenTraversableOnce
  12. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  13. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  14. final def close(): Unit

    Definition Classes
    ResourceIterator → Closeable → AutoCloseable
  15. def collect[B](f: PartialFunction[A, B]): ResourceIterator[B]

  16. def collectFirst[B](pf: PartialFunction[A, B]): Option[B]

    Definition Classes
    TraversableOnce
  17. def copyToArray[B >: A](xs: Array[B], start: Int, len: Int): Unit

    Definition Classes
    ResourceIterator → TraversableOnce → GenTraversableOnce
  18. def copyToArray[B >: A](xs: Array[B]): Unit

    Definition Classes
    TraversableOnce → GenTraversableOnce
  19. def copyToArray[B >: A](xs: Array[B], start: Int): Unit

    Definition Classes
    TraversableOnce → GenTraversableOnce
  20. def copyToBuffer[B >: A](dest: Buffer[B]): Unit

    Definition Classes
    TraversableOnce
  21. def count(p: (A) ⇒ Boolean): Int

    Definition Classes
    TraversableOnce → GenTraversableOnce
  22. def drop(n: Int): ResourceIterator[A]

    Drops the next n elements from the resource.

    Drops the next n elements from the resource.

    If the resource contains m elements such that m < n, then only m elements will be dropped.

    No element will be consumed until the next next call.

  23. def dropWhile(p: (A) ⇒ Boolean): ResourceIterator[A]

    Drops elements from the resource until one is found that doesn't verify p or the resource is empty.

    Drops elements from the resource until one is found that doesn't verify p or the resource is empty.

    No element will be consumed until the next next call.

  24. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  25. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  26. def exists(p: (A) ⇒ Boolean): Boolean

    Definition Classes
    ResourceIterator → TraversableOnce → GenTraversableOnce
  27. def filter(p: (A) ⇒ Boolean): ResourceIterator[A]

  28. def filterResult[E, S](p: (S) ⇒ Boolean)(implicit ev: <:<[A, Result[E, S]]): ResourceIterator[A]

  29. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  30. def find(p: (A) ⇒ Boolean): Option[A]

    Definition Classes
    ResourceIterator → TraversableOnce → GenTraversableOnce
  31. def flatMap[B](f: (A) ⇒ ResourceIterator[B]): ResourceIterator[B]

  32. def flatMapResult[E, S, B](f: (S) ⇒ Result[E, B])(implicit ev: <:<[A, Result[E, S]]): ResourceIterator[Result[E, B]]

  33. def fold[A1 >: A](z: A1)(op: (A1, A1) ⇒ A1): A1

    Definition Classes
    TraversableOnce → GenTraversableOnce
  34. def foldLeft[B](z: B)(op: (B, A) ⇒ B): B

    Definition Classes
    TraversableOnce → GenTraversableOnce
  35. def foldRight[B](z: B)(op: (A, B) ⇒ B): B

    Definition Classes
    TraversableOnce → GenTraversableOnce
  36. def forall(p: (A) ⇒ Boolean): Boolean

    Definition Classes
    ResourceIterator → TraversableOnce → GenTraversableOnce
  37. def foreach[U](f: (A) ⇒ U): Unit

    Definition Classes
    ResourceIterator → TraversableOnce → GenTraversableOnce
  38. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  39. def hasDefiniteSize: Boolean

    Definition Classes
    ResourceIterator → TraversableOnce → GenTraversableOnce
  40. final def hasNext: Boolean

  41. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  42. def isEmpty: Boolean

    Definition Classes
    ResourceIterator → TraversableOnce → GenTraversableOnce
  43. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  44. def isTraversableAgain: Boolean

    Definition Classes
    ResourceIterator → GenTraversableOnce
  45. def map[B](f: (A) ⇒ B): ResourceIterator[B]

  46. def mapResult[E, S, B](f: (S) ⇒ B)(implicit ev: <:<[A, Result[E, S]]): ResourceIterator[Result[E, B]]

    Applies the specified function to the Success case of the underlying Result.

  47. def max[B >: A](implicit cmp: Ordering[B]): A

    Definition Classes
    TraversableOnce → GenTraversableOnce
  48. def maxBy[B](f: (A) ⇒ B)(implicit cmp: Ordering[B]): A

    Definition Classes
    TraversableOnce → GenTraversableOnce
  49. def min[B >: A](implicit cmp: Ordering[B]): A

    Definition Classes
    TraversableOnce → GenTraversableOnce
  50. def minBy[B](f: (A) ⇒ B)(implicit cmp: Ordering[B]): A

    Definition Classes
    TraversableOnce → GenTraversableOnce
  51. def mkString: String

    Definition Classes
    TraversableOnce → GenTraversableOnce
  52. def mkString(sep: String): String

    Definition Classes
    TraversableOnce → GenTraversableOnce
  53. def mkString(start: String, sep: String, end: String): String

    Definition Classes
    TraversableOnce → GenTraversableOnce
  54. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  55. final def next(): A

  56. def nonEmpty: Boolean

    Definition Classes
    TraversableOnce → GenTraversableOnce
  57. final def notify(): Unit

    Definition Classes
    AnyRef
  58. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  59. def product[B >: A](implicit num: Numeric[B]): B

    Definition Classes
    TraversableOnce → GenTraversableOnce
  60. def reduce[A1 >: A](op: (A1, A1) ⇒ A1): A1

    Definition Classes
    TraversableOnce → GenTraversableOnce
  61. def reduceLeft[B >: A](op: (B, A) ⇒ B): B

    Definition Classes
    TraversableOnce
  62. def reduceLeftOption[B >: A](op: (B, A) ⇒ B): Option[B]

    Definition Classes
    TraversableOnce → GenTraversableOnce
  63. def reduceOption[A1 >: A](op: (A1, A1) ⇒ A1): Option[A1]

    Definition Classes
    TraversableOnce → GenTraversableOnce
  64. def reduceRight[B >: A](op: (A, B) ⇒ B): B

    Definition Classes
    TraversableOnce → GenTraversableOnce
  65. def reduceRightOption[B >: A](op: (A, B) ⇒ B): Option[B]

    Definition Classes
    TraversableOnce → GenTraversableOnce
  66. def reversed: List[A]

    Attributes
    protected[this]
    Definition Classes
    TraversableOnce
  67. def safe[F](empty: ⇒ F)(f: (Throwable) ⇒ F): ResourceIterator[Result[F, A]]

    Makes the current kantan.codecs.resource.ResourceIterator safe.

    Makes the current kantan.codecs.resource.ResourceIterator safe.

    This is achieved by catching all non-fatal exceptions and passing them to the specified f to turn into a failure type.

    This is meant to be used by the various kantan.* libraries that offer stream-like APIs: it allows them to wrap IO in a safe iterator and focus on dealing with decoding.

    empty

    error value for when next is called on an empty iterator.

    f

    used to turn non-fatal exceptions into error types.

  68. def seq: TraversableOnce[A]

    Definition Classes
    ResourceIterator → TraversableOnce → GenTraversableOnce
  69. def size: Int

    Definition Classes
    TraversableOnce → GenTraversableOnce
  70. def sum[B >: A](implicit num: Numeric[B]): B

    Definition Classes
    TraversableOnce → GenTraversableOnce
  71. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  72. def take(n: Int): ResourceIterator[A]

    Restrict this resource to the next n elements, dropping whatever is left.

  73. def takeWhile(p: (A) ⇒ Boolean): ResourceIterator[A]

    Considers this resource to be empty as soon as an element is found that doesn't verify p.

  74. def to[Col[_]](implicit cbf: CanBuildFrom[Nothing, A, Col[A]]): Col[A]

    Definition Classes
    TraversableOnce → GenTraversableOnce
  75. def toArray[B >: A](implicit arg0: ClassTag[B]): Array[B]

    Definition Classes
    TraversableOnce → GenTraversableOnce
  76. def toBuffer[B >: A]: Buffer[B]

    Definition Classes
    TraversableOnce → GenTraversableOnce
  77. def toIndexedSeq: IndexedSeq[A]

    Definition Classes
    TraversableOnce → GenTraversableOnce
  78. def toIterable: Iterable[A]

    Definition Classes
    TraversableOnce → GenTraversableOnce
  79. def toIterator: Iterator[A]

    Definition Classes
    ResourceIterator → GenTraversableOnce
  80. def toList: List[A]

    Definition Classes
    TraversableOnce → GenTraversableOnce
  81. def toMap[T, U](implicit ev: <:<[A, (T, U)]): Map[T, U]

    Definition Classes
    TraversableOnce → GenTraversableOnce
  82. def toSeq: Seq[A]

    Definition Classes
    TraversableOnce → GenTraversableOnce
  83. def toSet[B >: A]: Set[B]

    Definition Classes
    TraversableOnce → GenTraversableOnce
  84. def toStream: Stream[A]

    Definition Classes
    ResourceIterator → GenTraversableOnce
  85. def toString(): String

    Definition Classes
    AnyRef → Any
  86. def toTraversable: Traversable[A]

    Definition Classes
    ResourceIterator → TraversableOnce → GenTraversableOnce
  87. def toVector: Vector[A]

    Definition Classes
    TraversableOnce → GenTraversableOnce
  88. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  89. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  90. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  91. def withClose(f: () ⇒ Unit): ResourceIterator[A]

    Calls the specified function when the underlying resource is empty.

  92. def withFilter(p: (A) ⇒ Boolean): ResourceIterator[A]

Deprecated Value Members

  1. def /:\[A1 >: A](z: A1)(op: (A1, A1) ⇒ A1): A1

    Definition Classes
    GenTraversableOnce
    Annotations
    @deprecated
    Deprecated

    (Since version 2.10.0) use fold instead

Inherited from java.io.Closeable

Inherited from AutoCloseable

Inherited from TraversableOnce[A]

Inherited from GenTraversableOnce[A]

Inherited from AnyRef

Inherited from Any

Ungrouped