extension Bus { /// Пропускаем далее предоставленные ключи. static func convertKeyValue( _ keys: Set, _ v: (key: String, value: Any) ) -> (String, T)? { guard keys.contains(v.key), let value = v.value as? T else { return nil } return (v.key, value) } /// Обрабатываем. static func processKeyValue( _ v: (key: String, value: Any), _ keyIn: String, _ handler: @escaping ((Src) -> Dst?) ) -> Dst? { guard v.key == keyIn, let vIn = v.value as? Src else { return nil } return handler(vIn) } }