Hyperlinkv0.8.0-beta.28

MutableRef

MutableRef.getAndIncrementconsteffect/MutableRef.ts:363
(self: MutableRef<number>): number

Increments a numeric MutableRef by 1 and returns the previous value.

When to use

Use to read the current numeric MutableRef value before incrementing it.

Example (Reading before incrementing)

import { MutableRef } from "effect"

const counter = MutableRef.make(5)

// Get current value and then increment
const previousValue = MutableRef.getAndIncrement(counter)
console.log(previousValue) // 5
console.log(MutableRef.get(counter)) // 6

// Useful for ID generation
const idGenerator = MutableRef.make(0)
const getId = () => MutableRef.getAndIncrement(idGenerator)

console.log(getId()) // 0
console.log(getId()) // 1
console.log(getId()) // 2

// Post-increment semantics (like i++ in other languages)
const position = MutableRef.make(0)
const currentPos = MutableRef.getAndIncrement(position)
console.log(`Was at: ${currentPos}, Now at: ${MutableRef.get(position)}`) // "Was at: 0, Now at: 1"

// Useful for iteration counters
const iterations = MutableRef.make(0)
while (MutableRef.get(iterations) < 5) {
  const iteration = MutableRef.getAndIncrement(iterations)
  console.log(`Iteration ${iteration}`)
}
numeric
export const getAndIncrement = (self: MutableRef<number>): number => getAndUpdate(self, (n) => n + 1)