package com.annimon.stream.function;
/**
* Represents a function which produces result from input arguments and can throw an exception.
*
* @param <I> the type of the input of the function
* @param <R> the type of the result of the function
* @param <E> the type of the exception
* @see Function
*/
@FunctionalInterface
public interface ThrowableFunction<I, R, E extends Throwable> {
/**
* Applies this function to the given argument.
*
* @param i an argument
* @return the function result
* @throws E an exception
*/
R apply(I i) throws E;
}