# castFrom<S, T> method

Iterable<T> castFrom <S, T>(Iterable<S> source)

Adapts `source` to be an `Iterable<T>`.

Any time the iterable would produce an element that is not a `T`, the element access will throw. If all elements of `source` are actually instances of `T`, or if only elements that are actually instances of `T` are accessed, then the resulting iterable can be used as an `Iterable<T>`.

## Implementation

    static Iterable<T> castFrom<S, T>(Iterable<S> source) =>
        new CastIterable<S, T>(source);