Skip to main content
v0.14.0

Callable<A, B> does not exist, so a function type cannot be bounded by an aspect

Gap​

A plain function and a closure share one type, |A| -> B; there is no fun(A) -> B pointer type. The aspect that function types are sometimes described as implementing, Callable<A, B>, is not defined in std::core, so no bound names it and dyn Callable cannot be written. RFC-0161 (1-under-review) proposes the contract.

Impact​

No aspect bound can require "any callable", and dyn Callable cannot be written.

Affects​

Resolution​

Planned for v0.21.1, tracked as metel-core#923 (RFC-0161, 1-under-review). Deliberately kept off the ownership-and-freeze roadmap (v0.13.1–v0.20.0): Callable/dyn Callable completes the closure/aspect surface but establishes no new identity for the language, unlike the ownership and row-polymorphism work those milestones carry. v0.21.1 already carries other design settlement deferred the same way (comptime, derive, record conversions).