defmodule Skuld.Coroutine.Pending do
@moduledoc """
Fiber waiting to be run for the first time.
## Env semantics
`env` holds the initial scope (handlers, leave_scope, transform_suspend)
plus the state at creation time. Before the fiber runs, the scheduler
injects fresh shared state into `env.state` — the stored state is
overwritten and never used directly. The env is kept in full so `cancel/2`
can invoke `leave_scope` for cleanup even before execution.
"""
alias Skuld.Comp.Env
alias Skuld.Comp.Types
@type t :: %__MODULE__{
id: term(),
computation: Types.computation(),
env: Env.t()
}
defstruct [:id, :computation, :env]
end