defmodule Skuld.Coroutine.ForeignSuspended do
@moduledoc """
Fiber state when a single fiber suspends on a foreign resource.
The FiberPool scheduler collects all `ForeignSuspended` fibers, extracts
their individual `ForeignSuspend` values, and bundles them into a
`Coroutine.ForeignSuspensions` aggregate to return to the caller.
"""
alias Skuld.Comp.Env
alias Skuld.Comp.ForeignSuspend
@type t :: %__MODULE__{
id: term(),
suspend: ForeignSuspend.t(),
env: Env.t()
}
defstruct [:id, :suspend, :env]
end