# Sink.Sink.WithEarlyExit

A sink that can ask its producer callback to stop early.

## Signatures

```ts
interface WithEarlyExit<A, E, R> extends Sink<A, E, R> {
    readonly earlyExit: Effect<void>;
}
```

## Why

Bounded consumers such as `slice` and `dropAfter` need to end production without encoding
termination as a typed failure.

## Ownership and lifetime

`earlyExit` completes the surrounding consumer effect. Further callback deliveries are ignored;
interruption and cleanup remain owned by the surrounding producer effect.

## Property: earlyExit

Completes the surrounding early-exit consumer and suppresses later deliveries.

## Property: earlyExit: Why

Normal bounded completion remains distinct from typed producer failure.

## Property: earlyExit: Ownership and lifetime

The surrounding `withEarlyExit` execution owns this Effect; running it aborts its callback fiber.

## Examples

```ts
import { Effect } from "effect"
import type * as Sink from "@typed/fx/Sink"
const stop = (sink: Sink.Sink.WithEarlyExit<unknown, never, never>) => sink.earlyExit
```
