9e76983782
This is another reland of 4f8333e80e.
Third time is the charm.
CoreLibraryReviewExempt: Reland of accepted CL.
Change-Id: I4ea8326af91c168b044d252162571d3fe697e4b0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289826
Commit-Queue: Lasse Nielsen <lrn@google.com>
Reviewed-by: Nate Bosch <nbosch@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
30 lines
1.1 KiB
Dart
30 lines
1.1 KiB
Dart
// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
/// This iterator should be [close]d after use.
|
|
///
|
|
/// [ClosableIterator]s often use resources which should be freed after use.
|
|
/// The consumer of the iterator can either manually [close] the iterator, or
|
|
/// consume all elements on which the iterator will automatically be closed.
|
|
abstract class ClosableIterator<T> implements Iterator<T> {
|
|
/// Close this iterator.
|
|
void close();
|
|
|
|
/// Moves to the next element and [close]s the iterator if it was the last
|
|
/// element.
|
|
bool moveNext();
|
|
}
|
|
|
|
/// This iterable's iterator should be [close]d after use.
|
|
///
|
|
/// Companion class of [ClosableIterator].
|
|
abstract class ClosableIterable<T> extends Iterable<T> {
|
|
/// Close this iterables iterator.
|
|
void close();
|
|
|
|
/// Returns a [ClosableIterator] that allows iterating the elements of this
|
|
/// [ClosableIterable].
|
|
ClosableIterator<T> get iterator;
|
|
}
|