inline T waitForAsyncValue()

in src/utils.h [48:63]


inline T waitForAsyncValue(std::function<void(std::function<void(Result, const T&)>)> func) {
    auto resultPromise = std::make_shared<std::promise<Result>>();
    auto valuePromise = std::make_shared<std::promise<T>>();

    {
        py::gil_scoped_release release;

        func([resultPromise, valuePromise](Result result, const T& value) {
            valuePromise->set_value(value);
            resultPromise->set_value(result);
        });
    }

    internal::waitForResult(*resultPromise);
    return valuePromise->get_future().get();
}