<A, E>(self: Enqueue<A, E>, error: E): Effect<boolean, never, never>Fails the queue with an error. If the queue is already done, false is
returned.
Example (Failing queues with an error)
import { Effect, Queue } from "effect"
const program = Effect.gen(function*() {
const queue = yield* Queue.bounded<number, string>(10)
// Fail the queue with an error
const failed = yield* Queue.fail(queue, "Something went wrong")
console.log(failed) // true
// Taking from the failed queue fails with the error
const error = yield* Effect.flip(Queue.take(queue))
console.log(error) // "Something went wrong"
})completion
Source effect/Queue.ts:8541 lines
export const const fail: <A, E>(
self: Enqueue<A, E>,
error: E
) => Effect<boolean, never, never>
Fails the queue with an error. If the queue is already done, false is
returned.
Example (Failing queues with an error)
import { Effect, Queue } from "effect"
const program = Effect.gen(function*() {
const queue = yield* Queue.bounded<number, string>(10)
// Fail the queue with an error
const failed = yield* Queue.fail(queue, "Something went wrong")
console.log(failed) // true
// Taking from the failed queue fails with the error
const error = yield* Effect.flip(Queue.take(queue))
console.log(error) // "Something went wrong"
})
fail = <function (type parameter) A in <A, E>(self: Enqueue<A, E>, error: E): Effect<boolean>A, function (type parameter) E in <A, E>(self: Enqueue<A, E>, error: E): Effect<boolean>E>(self: Enqueue<A, E>(parameter) self: {
strategy: "suspend" | "dropping" | "sliding";
dispatcher: SchedulerDispatcher;
capacity: number;
messages: MutableList.MutableList<any>;
state: Queue.State<any, any>;
scheduleRunning: boolean;
toString: () => string;
toJSON: () => unknown;
}
self: interface Enqueue<in A, in E = never>An Enqueue is a queue that can be offered to.
Details
This interface represents the write-only part of a Queue, allowing you to offer
elements to the queue but not take elements from it.
Example (Offering through enqueue handles)
import { Effect, Queue } from "effect"
// Function that only needs write access to a queue
const producer = (enqueue: Queue.Enqueue<string>) =>
Effect.gen(function*() {
yield* Queue.offer(enqueue, "hello")
yield* Queue.offerAll(enqueue, ["world", "!"])
})
const program = Effect.gen(function*() {
const queue = yield* Queue.bounded<string>(10)
yield* producer(queue)
})
Companion namespace containing type-level metadata for the Enqueue
write-only queue interface.
Enqueue<function (type parameter) A in <A, E>(self: Enqueue<A, E>, error: E): Effect<boolean>A, function (type parameter) E in <A, E>(self: Enqueue<A, E>, error: E): Effect<boolean>E>, error: Eerror: function (type parameter) E in <A, E>(self: Enqueue<A, E>, error: E): Effect<boolean>E) => const failCause: {
<E>(cause: Cause<E>): <A>(
self: Enqueue<A, E>
) => Effect<boolean>
<A, E>(
self: Enqueue<A, E>,
cause: Cause<E>
): Effect<boolean>
}
failCause(self: Enqueue<A, E>(parameter) self: {
strategy: "suspend" | "dropping" | "sliding";
dispatcher: SchedulerDispatcher;
capacity: number;
messages: MutableList.MutableList<any>;
state: Queue.State<any, any>;
scheduleRunning: boolean;
toString: () => string;
toJSON: () => unknown;
}
self, import corecore.const causeFail: <E>(
error: E
) => Cause.Cause<E>
causeFail(error: Eerror))