All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.coursera.common.concurrent.FutureExtractors.scala Maven / Gradle / Ivy

/*
 * Copyright 2016 Coursera Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.coursera.common.concurrent

import scala.concurrent.ExecutionContext
import scala.concurrent.Future

/**
 * Makes it easy to extract components from futures of tuples. For example,
 * {{{
 *   def computation(): Future[(Int, String)]
 *   val Futures.Extract(number, message) = computation()
 * }}}
 * creates two separate futures `number: Future[Int]` and `message: Future[String]` that contain
 * the two components of the computation result.
 *
 * Note that all component futures fail if the future of the original tuple fails.
 */
private[concurrent] trait FutureExtractors {

  // GENERATED CODE BELOW.

  object Extract {
    def unapply[T1, T2](
        futureTuple: Future[(T1, T2)])
        (implicit ec: ExecutionContext):
      Option[(Future[T1], Future[T2])] = {

      Some(Tuple2(
        futureTuple.map(_._1),
        futureTuple.map(_._2)))
    }

    def unapply[T1, T2, T3](
        futureTuple: Future[(T1, T2, T3)])
        (implicit ec: ExecutionContext,
        dummyImplicit1: DummyImplicit):
      Option[(Future[T1], Future[T2], Future[T3])] = {

      Some(Tuple3(
        futureTuple.map(_._1),
        futureTuple.map(_._2),
        futureTuple.map(_._3)))
    }

    def unapply[T1, T2, T3, T4](
        futureTuple: Future[(T1, T2, T3, T4)])
        (implicit ec: ExecutionContext,
        dummyImplicit1: DummyImplicit,
        dummyImplicit2: DummyImplicit):
      Option[(Future[T1], Future[T2], Future[T3], Future[T4])] = {

      Some(Tuple4(
        futureTuple.map(_._1),
        futureTuple.map(_._2),
        futureTuple.map(_._3),
        futureTuple.map(_._4)))
    }

    def unapply[T1, T2, T3, T4, T5](
        futureTuple: Future[(T1, T2, T3, T4, T5)])
        (implicit ec: ExecutionContext,
        dummyImplicit1: DummyImplicit,
        dummyImplicit2: DummyImplicit,
        dummyImplicit3: DummyImplicit):
      Option[(Future[T1], Future[T2], Future[T3], Future[T4], Future[T5])] = {

      Some(Tuple5(
        futureTuple.map(_._1),
        futureTuple.map(_._2),
        futureTuple.map(_._3),
        futureTuple.map(_._4),
        futureTuple.map(_._5)))
    }

    def unapply[T1, T2, T3, T4, T5, T6](
        futureTuple: Future[(T1, T2, T3, T4, T5, T6)])
        (implicit ec: ExecutionContext,
        dummyImplicit1: DummyImplicit,
        dummyImplicit2: DummyImplicit,
        dummyImplicit3: DummyImplicit,
        dummyImplicit4: DummyImplicit):
      Option[(Future[T1], Future[T2], Future[T3], Future[T4], Future[T5], Future[T6])] = {

      Some(Tuple6(
        futureTuple.map(_._1),
        futureTuple.map(_._2),
        futureTuple.map(_._3),
        futureTuple.map(_._4),
        futureTuple.map(_._5),
        futureTuple.map(_._6)))
    }

    def unapply[T1, T2, T3, T4, T5, T6, T7](
        futureTuple: Future[(T1, T2, T3, T4, T5, T6, T7)])
        (implicit ec: ExecutionContext,
        dummyImplicit1: DummyImplicit,
        dummyImplicit2: DummyImplicit,
        dummyImplicit3: DummyImplicit,
        dummyImplicit4: DummyImplicit,
        dummyImplicit5: DummyImplicit):
      Option[(Future[T1], Future[T2], Future[T3], Future[T4], Future[T5], Future[T6], Future[T7])] = {

      Some(Tuple7(
        futureTuple.map(_._1),
        futureTuple.map(_._2),
        futureTuple.map(_._3),
        futureTuple.map(_._4),
        futureTuple.map(_._5),
        futureTuple.map(_._6),
        futureTuple.map(_._7)))
    }

    def unapply[T1, T2, T3, T4, T5, T6, T7, T8](
        futureTuple: Future[(T1, T2, T3, T4, T5, T6, T7, T8)])
        (implicit ec: ExecutionContext,
        dummyImplicit1: DummyImplicit,
        dummyImplicit2: DummyImplicit,
        dummyImplicit3: DummyImplicit,
        dummyImplicit4: DummyImplicit,
        dummyImplicit5: DummyImplicit,
        dummyImplicit6: DummyImplicit):
      Option[(Future[T1], Future[T2], Future[T3], Future[T4], Future[T5], Future[T6], Future[T7], Future[T8])] = {

      Some(Tuple8(
        futureTuple.map(_._1),
        futureTuple.map(_._2),
        futureTuple.map(_._3),
        futureTuple.map(_._4),
        futureTuple.map(_._5),
        futureTuple.map(_._6),
        futureTuple.map(_._7),
        futureTuple.map(_._8)))
    }

    def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9](
        futureTuple: Future[(T1, T2, T3, T4, T5, T6, T7, T8, T9)])
        (implicit ec: ExecutionContext,
        dummyImplicit1: DummyImplicit,
        dummyImplicit2: DummyImplicit,
        dummyImplicit3: DummyImplicit,
        dummyImplicit4: DummyImplicit,
        dummyImplicit5: DummyImplicit,
        dummyImplicit6: DummyImplicit,
        dummyImplicit7: DummyImplicit):
      Option[(Future[T1], Future[T2], Future[T3], Future[T4], Future[T5], Future[T6], Future[T7], Future[T8], Future[T9])] = {

      Some(Tuple9(
        futureTuple.map(_._1),
        futureTuple.map(_._2),
        futureTuple.map(_._3),
        futureTuple.map(_._4),
        futureTuple.map(_._5),
        futureTuple.map(_._6),
        futureTuple.map(_._7),
        futureTuple.map(_._8),
        futureTuple.map(_._9)))
    }

    def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10](
        futureTuple: Future[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)])
        (implicit ec: ExecutionContext,
        dummyImplicit1: DummyImplicit,
        dummyImplicit2: DummyImplicit,
        dummyImplicit3: DummyImplicit,
        dummyImplicit4: DummyImplicit,
        dummyImplicit5: DummyImplicit,
        dummyImplicit6: DummyImplicit,
        dummyImplicit7: DummyImplicit,
        dummyImplicit8: DummyImplicit):
      Option[(Future[T1], Future[T2], Future[T3], Future[T4], Future[T5], Future[T6], Future[T7], Future[T8], Future[T9], Future[T10])] = {

      Some(Tuple10(
        futureTuple.map(_._1),
        futureTuple.map(_._2),
        futureTuple.map(_._3),
        futureTuple.map(_._4),
        futureTuple.map(_._5),
        futureTuple.map(_._6),
        futureTuple.map(_._7),
        futureTuple.map(_._8),
        futureTuple.map(_._9),
        futureTuple.map(_._10)))
    }

    def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11](
        futureTuple: Future[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)])
        (implicit ec: ExecutionContext,
        dummyImplicit1: DummyImplicit,
        dummyImplicit2: DummyImplicit,
        dummyImplicit3: DummyImplicit,
        dummyImplicit4: DummyImplicit,
        dummyImplicit5: DummyImplicit,
        dummyImplicit6: DummyImplicit,
        dummyImplicit7: DummyImplicit,
        dummyImplicit8: DummyImplicit,
        dummyImplicit9: DummyImplicit):
      Option[(Future[T1], Future[T2], Future[T3], Future[T4], Future[T5], Future[T6], Future[T7], Future[T8], Future[T9], Future[T10], Future[T11])] = {

      Some(Tuple11(
        futureTuple.map(_._1),
        futureTuple.map(_._2),
        futureTuple.map(_._3),
        futureTuple.map(_._4),
        futureTuple.map(_._5),
        futureTuple.map(_._6),
        futureTuple.map(_._7),
        futureTuple.map(_._8),
        futureTuple.map(_._9),
        futureTuple.map(_._10),
        futureTuple.map(_._11)))
    }

    def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12](
        futureTuple: Future[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)])
        (implicit ec: ExecutionContext,
        dummyImplicit1: DummyImplicit,
        dummyImplicit2: DummyImplicit,
        dummyImplicit3: DummyImplicit,
        dummyImplicit4: DummyImplicit,
        dummyImplicit5: DummyImplicit,
        dummyImplicit6: DummyImplicit,
        dummyImplicit7: DummyImplicit,
        dummyImplicit8: DummyImplicit,
        dummyImplicit9: DummyImplicit,
        dummyImplicit10: DummyImplicit):
      Option[(Future[T1], Future[T2], Future[T3], Future[T4], Future[T5], Future[T6], Future[T7], Future[T8], Future[T9], Future[T10], Future[T11], Future[T12])] = {

      Some(Tuple12(
        futureTuple.map(_._1),
        futureTuple.map(_._2),
        futureTuple.map(_._3),
        futureTuple.map(_._4),
        futureTuple.map(_._5),
        futureTuple.map(_._6),
        futureTuple.map(_._7),
        futureTuple.map(_._8),
        futureTuple.map(_._9),
        futureTuple.map(_._10),
        futureTuple.map(_._11),
        futureTuple.map(_._12)))
    }

    def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13](
        futureTuple: Future[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)])
        (implicit ec: ExecutionContext,
        dummyImplicit1: DummyImplicit,
        dummyImplicit2: DummyImplicit,
        dummyImplicit3: DummyImplicit,
        dummyImplicit4: DummyImplicit,
        dummyImplicit5: DummyImplicit,
        dummyImplicit6: DummyImplicit,
        dummyImplicit7: DummyImplicit,
        dummyImplicit8: DummyImplicit,
        dummyImplicit9: DummyImplicit,
        dummyImplicit10: DummyImplicit,
        dummyImplicit11: DummyImplicit):
      Option[(Future[T1], Future[T2], Future[T3], Future[T4], Future[T5], Future[T6], Future[T7], Future[T8], Future[T9], Future[T10], Future[T11], Future[T12], Future[T13])] = {

      Some(Tuple13(
        futureTuple.map(_._1),
        futureTuple.map(_._2),
        futureTuple.map(_._3),
        futureTuple.map(_._4),
        futureTuple.map(_._5),
        futureTuple.map(_._6),
        futureTuple.map(_._7),
        futureTuple.map(_._8),
        futureTuple.map(_._9),
        futureTuple.map(_._10),
        futureTuple.map(_._11),
        futureTuple.map(_._12),
        futureTuple.map(_._13)))
    }

    def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14](
        futureTuple: Future[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)])
        (implicit ec: ExecutionContext,
        dummyImplicit1: DummyImplicit,
        dummyImplicit2: DummyImplicit,
        dummyImplicit3: DummyImplicit,
        dummyImplicit4: DummyImplicit,
        dummyImplicit5: DummyImplicit,
        dummyImplicit6: DummyImplicit,
        dummyImplicit7: DummyImplicit,
        dummyImplicit8: DummyImplicit,
        dummyImplicit9: DummyImplicit,
        dummyImplicit10: DummyImplicit,
        dummyImplicit11: DummyImplicit,
        dummyImplicit12: DummyImplicit):
      Option[(Future[T1], Future[T2], Future[T3], Future[T4], Future[T5], Future[T6], Future[T7], Future[T8], Future[T9], Future[T10], Future[T11], Future[T12], Future[T13], Future[T14])] = {

      Some(Tuple14(
        futureTuple.map(_._1),
        futureTuple.map(_._2),
        futureTuple.map(_._3),
        futureTuple.map(_._4),
        futureTuple.map(_._5),
        futureTuple.map(_._6),
        futureTuple.map(_._7),
        futureTuple.map(_._8),
        futureTuple.map(_._9),
        futureTuple.map(_._10),
        futureTuple.map(_._11),
        futureTuple.map(_._12),
        futureTuple.map(_._13),
        futureTuple.map(_._14)))
    }

    def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15](
        futureTuple: Future[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)])
        (implicit ec: ExecutionContext,
        dummyImplicit1: DummyImplicit,
        dummyImplicit2: DummyImplicit,
        dummyImplicit3: DummyImplicit,
        dummyImplicit4: DummyImplicit,
        dummyImplicit5: DummyImplicit,
        dummyImplicit6: DummyImplicit,
        dummyImplicit7: DummyImplicit,
        dummyImplicit8: DummyImplicit,
        dummyImplicit9: DummyImplicit,
        dummyImplicit10: DummyImplicit,
        dummyImplicit11: DummyImplicit,
        dummyImplicit12: DummyImplicit,
        dummyImplicit13: DummyImplicit):
      Option[(Future[T1], Future[T2], Future[T3], Future[T4], Future[T5], Future[T6], Future[T7], Future[T8], Future[T9], Future[T10], Future[T11], Future[T12], Future[T13], Future[T14], Future[T15])] = {

      Some(Tuple15(
        futureTuple.map(_._1),
        futureTuple.map(_._2),
        futureTuple.map(_._3),
        futureTuple.map(_._4),
        futureTuple.map(_._5),
        futureTuple.map(_._6),
        futureTuple.map(_._7),
        futureTuple.map(_._8),
        futureTuple.map(_._9),
        futureTuple.map(_._10),
        futureTuple.map(_._11),
        futureTuple.map(_._12),
        futureTuple.map(_._13),
        futureTuple.map(_._14),
        futureTuple.map(_._15)))
    }

    def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16](
        futureTuple: Future[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)])
        (implicit ec: ExecutionContext,
        dummyImplicit1: DummyImplicit,
        dummyImplicit2: DummyImplicit,
        dummyImplicit3: DummyImplicit,
        dummyImplicit4: DummyImplicit,
        dummyImplicit5: DummyImplicit,
        dummyImplicit6: DummyImplicit,
        dummyImplicit7: DummyImplicit,
        dummyImplicit8: DummyImplicit,
        dummyImplicit9: DummyImplicit,
        dummyImplicit10: DummyImplicit,
        dummyImplicit11: DummyImplicit,
        dummyImplicit12: DummyImplicit,
        dummyImplicit13: DummyImplicit,
        dummyImplicit14: DummyImplicit):
      Option[(Future[T1], Future[T2], Future[T3], Future[T4], Future[T5], Future[T6], Future[T7], Future[T8], Future[T9], Future[T10], Future[T11], Future[T12], Future[T13], Future[T14], Future[T15], Future[T16])] = {

      Some(Tuple16(
        futureTuple.map(_._1),
        futureTuple.map(_._2),
        futureTuple.map(_._3),
        futureTuple.map(_._4),
        futureTuple.map(_._5),
        futureTuple.map(_._6),
        futureTuple.map(_._7),
        futureTuple.map(_._8),
        futureTuple.map(_._9),
        futureTuple.map(_._10),
        futureTuple.map(_._11),
        futureTuple.map(_._12),
        futureTuple.map(_._13),
        futureTuple.map(_._14),
        futureTuple.map(_._15),
        futureTuple.map(_._16)))
    }

    def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17](
        futureTuple: Future[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)])
        (implicit ec: ExecutionContext,
        dummyImplicit1: DummyImplicit,
        dummyImplicit2: DummyImplicit,
        dummyImplicit3: DummyImplicit,
        dummyImplicit4: DummyImplicit,
        dummyImplicit5: DummyImplicit,
        dummyImplicit6: DummyImplicit,
        dummyImplicit7: DummyImplicit,
        dummyImplicit8: DummyImplicit,
        dummyImplicit9: DummyImplicit,
        dummyImplicit10: DummyImplicit,
        dummyImplicit11: DummyImplicit,
        dummyImplicit12: DummyImplicit,
        dummyImplicit13: DummyImplicit,
        dummyImplicit14: DummyImplicit,
        dummyImplicit15: DummyImplicit):
      Option[(Future[T1], Future[T2], Future[T3], Future[T4], Future[T5], Future[T6], Future[T7], Future[T8], Future[T9], Future[T10], Future[T11], Future[T12], Future[T13], Future[T14], Future[T15], Future[T16], Future[T17])] = {

      Some(Tuple17(
        futureTuple.map(_._1),
        futureTuple.map(_._2),
        futureTuple.map(_._3),
        futureTuple.map(_._4),
        futureTuple.map(_._5),
        futureTuple.map(_._6),
        futureTuple.map(_._7),
        futureTuple.map(_._8),
        futureTuple.map(_._9),
        futureTuple.map(_._10),
        futureTuple.map(_._11),
        futureTuple.map(_._12),
        futureTuple.map(_._13),
        futureTuple.map(_._14),
        futureTuple.map(_._15),
        futureTuple.map(_._16),
        futureTuple.map(_._17)))
    }

    def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18](
        futureTuple: Future[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)])
        (implicit ec: ExecutionContext,
        dummyImplicit1: DummyImplicit,
        dummyImplicit2: DummyImplicit,
        dummyImplicit3: DummyImplicit,
        dummyImplicit4: DummyImplicit,
        dummyImplicit5: DummyImplicit,
        dummyImplicit6: DummyImplicit,
        dummyImplicit7: DummyImplicit,
        dummyImplicit8: DummyImplicit,
        dummyImplicit9: DummyImplicit,
        dummyImplicit10: DummyImplicit,
        dummyImplicit11: DummyImplicit,
        dummyImplicit12: DummyImplicit,
        dummyImplicit13: DummyImplicit,
        dummyImplicit14: DummyImplicit,
        dummyImplicit15: DummyImplicit,
        dummyImplicit16: DummyImplicit):
      Option[(Future[T1], Future[T2], Future[T3], Future[T4], Future[T5], Future[T6], Future[T7], Future[T8], Future[T9], Future[T10], Future[T11], Future[T12], Future[T13], Future[T14], Future[T15], Future[T16], Future[T17], Future[T18])] = {

      Some(Tuple18(
        futureTuple.map(_._1),
        futureTuple.map(_._2),
        futureTuple.map(_._3),
        futureTuple.map(_._4),
        futureTuple.map(_._5),
        futureTuple.map(_._6),
        futureTuple.map(_._7),
        futureTuple.map(_._8),
        futureTuple.map(_._9),
        futureTuple.map(_._10),
        futureTuple.map(_._11),
        futureTuple.map(_._12),
        futureTuple.map(_._13),
        futureTuple.map(_._14),
        futureTuple.map(_._15),
        futureTuple.map(_._16),
        futureTuple.map(_._17),
        futureTuple.map(_._18)))
    }

    def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](
        futureTuple: Future[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)])
        (implicit ec: ExecutionContext,
        dummyImplicit1: DummyImplicit,
        dummyImplicit2: DummyImplicit,
        dummyImplicit3: DummyImplicit,
        dummyImplicit4: DummyImplicit,
        dummyImplicit5: DummyImplicit,
        dummyImplicit6: DummyImplicit,
        dummyImplicit7: DummyImplicit,
        dummyImplicit8: DummyImplicit,
        dummyImplicit9: DummyImplicit,
        dummyImplicit10: DummyImplicit,
        dummyImplicit11: DummyImplicit,
        dummyImplicit12: DummyImplicit,
        dummyImplicit13: DummyImplicit,
        dummyImplicit14: DummyImplicit,
        dummyImplicit15: DummyImplicit,
        dummyImplicit16: DummyImplicit,
        dummyImplicit17: DummyImplicit):
      Option[(Future[T1], Future[T2], Future[T3], Future[T4], Future[T5], Future[T6], Future[T7], Future[T8], Future[T9], Future[T10], Future[T11], Future[T12], Future[T13], Future[T14], Future[T15], Future[T16], Future[T17], Future[T18], Future[T19])] = {

      Some(Tuple19(
        futureTuple.map(_._1),
        futureTuple.map(_._2),
        futureTuple.map(_._3),
        futureTuple.map(_._4),
        futureTuple.map(_._5),
        futureTuple.map(_._6),
        futureTuple.map(_._7),
        futureTuple.map(_._8),
        futureTuple.map(_._9),
        futureTuple.map(_._10),
        futureTuple.map(_._11),
        futureTuple.map(_._12),
        futureTuple.map(_._13),
        futureTuple.map(_._14),
        futureTuple.map(_._15),
        futureTuple.map(_._16),
        futureTuple.map(_._17),
        futureTuple.map(_._18),
        futureTuple.map(_._19)))
    }

    def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](
        futureTuple: Future[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)])
        (implicit ec: ExecutionContext,
        dummyImplicit1: DummyImplicit,
        dummyImplicit2: DummyImplicit,
        dummyImplicit3: DummyImplicit,
        dummyImplicit4: DummyImplicit,
        dummyImplicit5: DummyImplicit,
        dummyImplicit6: DummyImplicit,
        dummyImplicit7: DummyImplicit,
        dummyImplicit8: DummyImplicit,
        dummyImplicit9: DummyImplicit,
        dummyImplicit10: DummyImplicit,
        dummyImplicit11: DummyImplicit,
        dummyImplicit12: DummyImplicit,
        dummyImplicit13: DummyImplicit,
        dummyImplicit14: DummyImplicit,
        dummyImplicit15: DummyImplicit,
        dummyImplicit16: DummyImplicit,
        dummyImplicit17: DummyImplicit,
        dummyImplicit18: DummyImplicit):
      Option[(Future[T1], Future[T2], Future[T3], Future[T4], Future[T5], Future[T6], Future[T7], Future[T8], Future[T9], Future[T10], Future[T11], Future[T12], Future[T13], Future[T14], Future[T15], Future[T16], Future[T17], Future[T18], Future[T19], Future[T20])] = {

      Some(Tuple20(
        futureTuple.map(_._1),
        futureTuple.map(_._2),
        futureTuple.map(_._3),
        futureTuple.map(_._4),
        futureTuple.map(_._5),
        futureTuple.map(_._6),
        futureTuple.map(_._7),
        futureTuple.map(_._8),
        futureTuple.map(_._9),
        futureTuple.map(_._10),
        futureTuple.map(_._11),
        futureTuple.map(_._12),
        futureTuple.map(_._13),
        futureTuple.map(_._14),
        futureTuple.map(_._15),
        futureTuple.map(_._16),
        futureTuple.map(_._17),
        futureTuple.map(_._18),
        futureTuple.map(_._19),
        futureTuple.map(_._20)))
    }

    def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](
        futureTuple: Future[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)])
        (implicit ec: ExecutionContext,
        dummyImplicit1: DummyImplicit,
        dummyImplicit2: DummyImplicit,
        dummyImplicit3: DummyImplicit,
        dummyImplicit4: DummyImplicit,
        dummyImplicit5: DummyImplicit,
        dummyImplicit6: DummyImplicit,
        dummyImplicit7: DummyImplicit,
        dummyImplicit8: DummyImplicit,
        dummyImplicit9: DummyImplicit,
        dummyImplicit10: DummyImplicit,
        dummyImplicit11: DummyImplicit,
        dummyImplicit12: DummyImplicit,
        dummyImplicit13: DummyImplicit,
        dummyImplicit14: DummyImplicit,
        dummyImplicit15: DummyImplicit,
        dummyImplicit16: DummyImplicit,
        dummyImplicit17: DummyImplicit,
        dummyImplicit18: DummyImplicit,
        dummyImplicit19: DummyImplicit):
      Option[(Future[T1], Future[T2], Future[T3], Future[T4], Future[T5], Future[T6], Future[T7], Future[T8], Future[T9], Future[T10], Future[T11], Future[T12], Future[T13], Future[T14], Future[T15], Future[T16], Future[T17], Future[T18], Future[T19], Future[T20], Future[T21])] = {

      Some(Tuple21(
        futureTuple.map(_._1),
        futureTuple.map(_._2),
        futureTuple.map(_._3),
        futureTuple.map(_._4),
        futureTuple.map(_._5),
        futureTuple.map(_._6),
        futureTuple.map(_._7),
        futureTuple.map(_._8),
        futureTuple.map(_._9),
        futureTuple.map(_._10),
        futureTuple.map(_._11),
        futureTuple.map(_._12),
        futureTuple.map(_._13),
        futureTuple.map(_._14),
        futureTuple.map(_._15),
        futureTuple.map(_._16),
        futureTuple.map(_._17),
        futureTuple.map(_._18),
        futureTuple.map(_._19),
        futureTuple.map(_._20),
        futureTuple.map(_._21)))
    }

    def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](
        futureTuple: Future[(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22)])
        (implicit ec: ExecutionContext,
        dummyImplicit1: DummyImplicit,
        dummyImplicit2: DummyImplicit,
        dummyImplicit3: DummyImplicit,
        dummyImplicit4: DummyImplicit,
        dummyImplicit5: DummyImplicit,
        dummyImplicit6: DummyImplicit,
        dummyImplicit7: DummyImplicit,
        dummyImplicit8: DummyImplicit,
        dummyImplicit9: DummyImplicit,
        dummyImplicit10: DummyImplicit,
        dummyImplicit11: DummyImplicit,
        dummyImplicit12: DummyImplicit,
        dummyImplicit13: DummyImplicit,
        dummyImplicit14: DummyImplicit,
        dummyImplicit15: DummyImplicit,
        dummyImplicit16: DummyImplicit,
        dummyImplicit17: DummyImplicit,
        dummyImplicit18: DummyImplicit,
        dummyImplicit19: DummyImplicit,
        dummyImplicit20: DummyImplicit):
      Option[(Future[T1], Future[T2], Future[T3], Future[T4], Future[T5], Future[T6], Future[T7], Future[T8], Future[T9], Future[T10], Future[T11], Future[T12], Future[T13], Future[T14], Future[T15], Future[T16], Future[T17], Future[T18], Future[T19], Future[T20], Future[T21], Future[T22])] = {

      Some(Tuple22(
        futureTuple.map(_._1),
        futureTuple.map(_._2),
        futureTuple.map(_._3),
        futureTuple.map(_._4),
        futureTuple.map(_._5),
        futureTuple.map(_._6),
        futureTuple.map(_._7),
        futureTuple.map(_._8),
        futureTuple.map(_._9),
        futureTuple.map(_._10),
        futureTuple.map(_._11),
        futureTuple.map(_._12),
        futureTuple.map(_._13),
        futureTuple.map(_._14),
        futureTuple.map(_._15),
        futureTuple.map(_._16),
        futureTuple.map(_._17),
        futureTuple.map(_._18),
        futureTuple.map(_._19),
        futureTuple.map(_._20),
        futureTuple.map(_._21),
        futureTuple.map(_._22)))
    }
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy