Hyperlinkv0.8.0-beta.28

TxPriorityQueue

TxPriorityQueue.offerconsteffect/TxPriorityQueue.ts:318
<A>(value: A): (self: TxPriorityQueue<A>) => Effect.Effect<void>
<A>(self: TxPriorityQueue<A>, value: A): Effect.Effect<void>

Inserts an element into the queue in sorted position.

Example (Offering a value)

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

const program = Effect.gen(function*() {
  const pq = yield* TxPriorityQueue.empty<number>(Order.Number)
  yield* TxPriorityQueue.offer(pq, 2)
  yield* TxPriorityQueue.offer(pq, 1)
  const first = yield* TxPriorityQueue.take(pq)
  console.log(first) // 1
})
mutations
export const offer: {
  <A>(value: A): (self: TxPriorityQueue<A>) => Effect.Effect<void>
  <A>(self: TxPriorityQueue<A>, value: A): Effect.Effect<void>
} = dual(
  2,
  <A>(self: TxPriorityQueue<A>, value: A): Effect.Effect<void> =>
    TxRef.update(self.ref, (chunk) => insertSorted(chunk, value, self.ord))
)