# Fx.drain

Runs an `Fx` stream to completion, discarding all values.
Useful when the side effects of the stream are all that matter.

## Signatures

```ts
export declare const drain: <A, E, R>(fx: Fx<A, E, R>) => Effect<void, E, R>;
```

## Why

Some producers perform all useful work in acquisition, effects, or finalization and
need execution without retaining their emitted values.

## Ownership and lifetime

Running the Effect owns one source subscription until completion, failure, or
interruption. It allocates no collection and adds no per-value effect. Source
failures and services remain visible.

## Examples

```ts
import { drain, fromIterable } from "@typed/fx/Fx"

const program = drain(fromIterable([1, 2, 3]))
```
