# RefGraph.updateEdge

Update an edge's data.

## Signatures

```ts
export declare const updateEdge: {
    <E>(edgeIndex: Graph.EdgeIndex, f: (data: E) => E): <N, T extends Graph.Kind, Err, R>(ref: RefGraph<N, E, T, Err, R>) => Effect.Effect<Graph.Graph<N, E, T>, Err, R>;
    <N, E, T extends Graph.Kind, Err, R>(ref: RefGraph<N, E, T, Err, R>, edgeIndex: Graph.EdgeIndex, f: (data: E) => E): Effect.Effect<Graph.Graph<N, E, T>, Err, R>;
};
```

## Why

Keeps update edge atomic with respect to competing RefSubject writes instead of splitting the
read and replacement into separate effects.

## Ownership and lifetime

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