# takeWhile

Take values from a RefIterable while a predicate is true.

## Signatures

```ts
export declare const takeWhile: {
    <A>(predicate: (a: A) => boolean): <E, R>(ref: RefIterable<A, E, R>) => Effect.Effect<Iterable<A>, E, R>;
    <A, E, R>(ref: RefIterable<A, E, R>, predicate: (a: A) => boolean): Effect.Effect<Iterable<A>, E, R>;
};
```

## Why

Applies take while to the committed iterable value and publishes only the result, preserving its
element order and equality rules.

## Ownership and lifetime

Running take while performs one serialized iterable transition and resolves with its committed
value. It acquires no resource; failures and services remain those of the source ref.
