To make that work id say there are a few changes needed there (but im still not fully convinced that is measurably better for all cases).
public init(_ emit: () throws(Failure) -> Element?)
public init(_ emit: (Context) throws(Failure) -> Element)
public struct Context: ~Escapable {
public finish()
}
We likely wouldn't want the context to escape out of the scope. The other issue I'd say is important to consider is that the overload on those two might be difficult to reason about.
Is that somehow better than requiring folks to write Observed<Int?, Never> { ... }?