As part of concurrency checking, AsyncPredicate needs to be Sendable. Part of that is that the closure needs to be Sendable and AsyncPredicate needs to be constrained to only Sendable types.
As part of interop with AsyncPredicate, Predicate needs to be Sendable. Though, it's ok to only make Predicate Sendable when the type it works with is Sendable (that is, we have: extension Predicate: Sendable where T: Sendable {}).
This also fixes compiler errors in Nimble associated with making the closures passed to Predicate Sendable.
As part of concurrency checking,
AsyncPredicate
needs to be Sendable. Part of that is that the closure needs to be Sendable andAsyncPredicate
needs to be constrained to only Sendable types.As part of interop with
AsyncPredicate
,Predicate
needs to be Sendable. Though, it's ok to only makePredicate
Sendable when the type it works with isSendable
(that is, we have:extension Predicate: Sendable where T: Sendable {}
).This also fixes compiler errors in Nimble associated with making the closures passed to Predicate Sendable.