# hasEdge

Check if an edge exists.

## Signatures

```ts
export declare const hasEdge: {
    (source: Graph.NodeIndex, target: Graph.NodeIndex): <N, E, T extends Graph.Kind, Err, R>(ref: RefGraph<N, E, T, Err, R>) => RefSubject.Computed<boolean, Err, R>;
    <N, E, T extends Graph.Kind, Err, R>(ref: RefGraph<N, E, T, Err, R>, source: Graph.NodeIndex, target: Graph.NodeIndex): RefSubject.Computed<boolean, Err, R>;
};
```

## Why

Makes has edge a live projection of the graph; consumers can sample it now or observe it without
copying the source state.

## Ownership and lifetime

The has edge view retains no independent state. An Effect read samples the source once; Fx
observation follows later pushes and its observing Scope owns subscription cleanup.
