From 80ddd9d5683b023e7ae20557118c839e59069d83 Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Tue, 9 Aug 2022 14:36:47 +0200 Subject: FutureUtils: Add mapSuccess() to map success type of variants --- src/base/QXmppFutureUtils_p.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/base') diff --git a/src/base/QXmppFutureUtils_p.h b/src/base/QXmppFutureUtils_p.h index bf8c2f35..2551be67 100644 --- a/src/base/QXmppFutureUtils_p.h +++ b/src/base/QXmppFutureUtils_p.h @@ -176,6 +176,21 @@ void reportFinishedResult(QFutureInterface &interface, const T &result) interface.reportFinished(); } +template +auto mapSuccess(std::variant var, Function lambda) +{ + using MapResult = std::decay_t; + using MappedVariant = std::variant; + return std::visit(overloaded { + [lambda = std::move(lambda)](T val) -> MappedVariant { + return lambda(std::move(val)); + }, + [](Err err) -> MappedVariant { + return err; + } }, + std::move(var)); +} + } // namespace QXmpp::Private #endif // QXMPPFUTUREUTILS_P_H -- cgit v1.2.3