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()
- Alphabetic
- By Inheritance
- ResourceIterator
- Closeable
- AutoCloseable
- TraversableOnce
- GenTraversableOnce
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Abstract Value Members
-
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
-
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
-
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
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
def
/:[B](z: B)(op: (B, A) ⇒ B): B
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
:\[B](z: B)(op: (A, B) ⇒ B): B
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
addString(b: StringBuilder): StringBuilder
- Definition Classes
- TraversableOnce
-
def
addString(b: StringBuilder, sep: String): StringBuilder
- Definition Classes
- TraversableOnce
-
def
addString(b: StringBuilder, start: String, sep: String, end: String): StringBuilder
- Definition Classes
- TraversableOnce
-
def
aggregate[B](z: ⇒ B)(seqop: (B, A) ⇒ B, combop: (B, B) ⇒ B): B
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
final
def
close(): Unit
- Definition Classes
- ResourceIterator → Closeable → AutoCloseable
- def collect[B](f: PartialFunction[A, B]): ResourceIterator[B]
-
def
collectFirst[B](pf: PartialFunction[A, B]): Option[B]
- Definition Classes
- TraversableOnce
-
def
copyToArray[B >: A](xs: Array[B], start: Int, len: Int): Unit
- Definition Classes
- ResourceIterator → TraversableOnce → GenTraversableOnce
-
def
copyToArray[B >: A](xs: Array[B]): Unit
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
copyToArray[B >: A](xs: Array[B], start: Int): Unit
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
copyToBuffer[B >: A](dest: Buffer[B]): Unit
- Definition Classes
- TraversableOnce
-
def
count(p: (A) ⇒ Boolean): Int
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
drop(n: Int): ResourceIterator[A]
Drops the next
nelements from the resource.Drops the next
nelements from the resource.If the resource contains
melements such thatm < n, then onlymelements will be dropped.No element will be consumed until the next next call.
-
def
dropWhile(p: (A) ⇒ Boolean): ResourceIterator[A]
Drops elements from the resource until one is found that doesn't verify
por the resource is empty.Drops elements from the resource until one is found that doesn't verify
por the resource is empty.No element will be consumed until the next next call.
- def emap[E, S, B](f: (S) ⇒ Either[E, B])(implicit ev: <:<[A, Either[E, S]]): ResourceIterator[Either[E, B]]
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
exists(p: (A) ⇒ Boolean): Boolean
- Definition Classes
- ResourceIterator → TraversableOnce → GenTraversableOnce
- def filter(p: (A) ⇒ Boolean): ResourceIterator[A]
- def filterResult[E, S](p: (S) ⇒ Boolean)(implicit ev: <:<[A, Either[E, S]]): ResourceIterator[A]
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
def
find(p: (A) ⇒ Boolean): Option[A]
- Definition Classes
- ResourceIterator → TraversableOnce → GenTraversableOnce
- def flatMap[B](f: (A) ⇒ ResourceIterator[B]): ResourceIterator[B]
-
def
fold[A1 >: A](z: A1)(op: (A1, A1) ⇒ A1): A1
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
foldLeft[B](z: B)(op: (B, A) ⇒ B): B
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
foldRight[B](z: B)(op: (A, B) ⇒ B): B
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
forall(p: (A) ⇒ Boolean): Boolean
- Definition Classes
- ResourceIterator → TraversableOnce → GenTraversableOnce
-
def
foreach[U](f: (A) ⇒ U): Unit
- Definition Classes
- ResourceIterator → TraversableOnce → GenTraversableOnce
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hasDefiniteSize: Boolean
- Definition Classes
- ResourceIterator → TraversableOnce → GenTraversableOnce
- final def hasNext: Boolean
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
isEmpty: Boolean
- Definition Classes
- ResourceIterator → TraversableOnce → GenTraversableOnce
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
isTraversableAgain: Boolean
- Definition Classes
- ResourceIterator → GenTraversableOnce
- def map[B](f: (A) ⇒ B): ResourceIterator[B]
-
def
mapResult[E, S, B](f: (S) ⇒ B)(implicit ev: <:<[A, Either[E, S]]): ResourceIterator[Either[E, B]]
Applies the specified function to the
Rightcase of the underlyingEither. -
def
max[B >: A](implicit cmp: Ordering[B]): A
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
maxBy[B](f: (A) ⇒ B)(implicit cmp: Ordering[B]): A
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
min[B >: A](implicit cmp: Ordering[B]): A
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
minBy[B](f: (A) ⇒ B)(implicit cmp: Ordering[B]): A
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
mkString: String
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
mkString(sep: String): String
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
mkString(start: String, sep: String, end: String): String
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def next(): A
-
def
nonEmpty: Boolean
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
def
product[B >: A](implicit num: Numeric[B]): B
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
reduce[A1 >: A](op: (A1, A1) ⇒ A1): A1
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
reduceLeft[B >: A](op: (B, A) ⇒ B): B
- Definition Classes
- TraversableOnce
-
def
reduceLeftOption[B >: A](op: (B, A) ⇒ B): Option[B]
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
reduceOption[A1 >: A](op: (A1, A1) ⇒ A1): Option[A1]
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
reduceRight[B >: A](op: (A, B) ⇒ B): B
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
reduceRightOption[B >: A](op: (A, B) ⇒ B): Option[B]
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
reversed: List[A]
- Attributes
- protected[this]
- Definition Classes
- TraversableOnce
-
def
safe[F](empty: ⇒ F)(f: (Throwable) ⇒ F): ResourceIterator[Either[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
fto 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
nextis called on an empty iterator.- f
used to turn non-fatal exceptions into error types.
-
def
seq: TraversableOnce[A]
- Definition Classes
- ResourceIterator → TraversableOnce → GenTraversableOnce
-
def
size: Int
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
sizeHintIfCheap: Int
- Attributes
- protected[scala.collection]
- Definition Classes
- GenTraversableOnce
-
def
sum[B >: A](implicit num: Numeric[B]): B
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
take(n: Int): ResourceIterator[A]
Restrict this resource to the next
nelements, dropping whatever is left. -
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. -
def
to[Col[_]](implicit cbf: CanBuildFrom[Nothing, A, Col[A]]): Col[A]
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
toArray[B >: A](implicit arg0: ClassTag[B]): Array[B]
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
toBuffer[B >: A]: Buffer[B]
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
toIndexedSeq: IndexedSeq[A]
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
toIterable: Iterable[A]
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
toIterator: Iterator[A]
- Definition Classes
- ResourceIterator → GenTraversableOnce
-
def
toList: List[A]
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
toMap[T, U](implicit ev: <:<[A, (T, U)]): Map[T, U]
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
toSeq: Seq[A]
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
toSet[B >: A]: Set[B]
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
def
toStream: Stream[A]
- Definition Classes
- ResourceIterator → GenTraversableOnce
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
def
toTraversable: Traversable[A]
- Definition Classes
- ResourceIterator → TraversableOnce → GenTraversableOnce
-
def
toVector: Vector[A]
- Definition Classes
- TraversableOnce → GenTraversableOnce
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
def
withClose(f: () ⇒ Unit): ResourceIterator[A]
Calls the specified function when the underlying resource is empty.
- def withFilter(p: (A) ⇒ Boolean): ResourceIterator[A]
Deprecated Value Members
-
def
flatMapResult[E, S, B](f: (S) ⇒ Either[E, B])(implicit ev: <:<[A, Either[E, S]]): ResourceIterator[Either[E, B]]
- Annotations
- @deprecated
- Deprecated
(Since version 0.2.2) Use emap instead