Hyperlinkv0.8.0-beta.28

TxPriorityQueue

TxPriorityQueue.takeOptionconsteffect/TxPriorityQueue.ts:429
<A>(self: TxPriorityQueue<A>): Effect.Effect<Option<A>>

Tries to take the smallest element. Returns None if the queue is empty.

Example (Taking without retrying)

import { Effect, Option, Order, TxPriorityQueue } from "effect"

const program = Effect.gen(function*() {
  const pq = yield* TxPriorityQueue.empty<number>(Order.Number)
  const result = yield* TxPriorityQueue.takeOption(pq)
  console.log(Option.isNone(result)) // true
})
mutations
export const takeOption = <A>(self: TxPriorityQueue<A>): Effect.Effect<Option<A>> =>
  TxRef.modify(self.ref, (chunk) => {
    const head = C.head(chunk)
    if (O.isNone(head)) {
      return [O.none<A>(), chunk]
    }
    return [O.some(head.value), C.drop(chunk, 1)]
  })