Hyperlinkv0.8.0-beta.28

TxPriorityQueue

TxPriorityQueue.offerAllconsteffect/TxPriorityQueue.ts:346
<A>(values: Iterable<A>): (
  self: TxPriorityQueue<A>
) => Effect.Effect<void>
<A>(self: TxPriorityQueue<A>, values: Iterable<A>): Effect.Effect<void>

Inserts all elements from an iterable into the queue.

Example (Offering multiple values)

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

const program = Effect.gen(function*() {
  const pq = yield* TxPriorityQueue.empty<number>(Order.Number)
  yield* TxPriorityQueue.offerAll(pq, [3, 1, 2])
  const first = yield* TxPriorityQueue.take(pq)
  console.log(first) // 1
})
mutations
export const offerAll: {
  <A>(values: Iterable<A>): (self: TxPriorityQueue<A>) => Effect.Effect<void>
  <A>(self: TxPriorityQueue<A>, values: Iterable<A>): Effect.Effect<void>
} = dual(
  2,
  <A>(self: TxPriorityQueue<A>, values: Iterable<A>): Effect.Effect<void> =>
    TxRef.update(self.ref, (chunk) => {
      const arr = [...C.toArray(chunk), ...values].sort((a, b) => self.ord(a, b))
      return C.fromIterable(arr)
    })
)