Получение «Значения типа '() async -> ()', изолированного от задачи, переданного как строго переданный параметр» в Swift 6

В моем проекте Swift 5 у меня есть это расширение для передачи функции async в Publisher.map:

Однако я не могу скомпилировать это в Xcode 16.1 beta с использованием Swift 6, получая "Task-isolated value of type '() async -> ()' passed as a strong passed parameter; later accesses could race". Можно ли как-то перенести это расширение в Swift 6? Уже пробовал добавлять Sendable и @Sendable везде.

import Combine

public extension Publisher {
    func asyncMap<T>(
        _ asyncFunc: @escaping (Output) async -> T
    ) -> Publishers.FlatMap<Future<T, Never>, Self> {
        flatMap { value in
            Future { promise in
                Task {
                    let result = await asyncFunc(value)
                    promise(.success(result))
                }
            }
        }
    }
}
Анжелика
Вопрос задан16 января 2024 г.

1 Ответ

2
Макар
Ответ получен11 сентября 2024 г.

Ваш ответ

Загрузить файл.