Structured RustQ diagnostic data for lowering/rendering failures.
@type t() :: %RustQ.Diagnostic{ details: map(), kind: atom(), message: String.t(), node: Macro.t() | nil, phase: atom(), snippet: String.t() | nil, suggestion: String.t() | nil }
@spec defrust(atom(), Macro.t(), String.t(), keyword()) :: no_return()
@spec lower(atom(), Macro.t(), String.t(), keyword()) :: no_return()
@spec new(atom(), atom(), Macro.t() | nil, String.t(), keyword()) :: t()
@spec render(atom(), term(), String.t(), keyword()) :: no_return()