package com.github.scr.j8iterables.core;
import com.google.common.collect.FluentIterable;
import javax.annotation.Nonnull;
import java.util.Iterator;
import java.util.Spliterator;
import java.util.function.Consumer;
import java.util.stream.Stream;
/**
* Proxy class that converts a stream, which implements all of Iterable's methods to an Iterable.
*
* @param <T> The type of elements
*/
public class StreamIterable<T> extends FluentIterable<T> {
@Nonnull
private final Stream<T> STREAM;
public StreamIterable(Stream<T> stream) {
STREAM = stream;
}
@Nonnull
public Iterator<T> iterator() {
return STREAM.iterator();
}
public void forEach(Consumer<? super T> action) {
STREAM.forEach(action);
}
@Nonnull
public Spliterator<T> spliterator() {
return STREAM.spliterator();
}
}