杨锴
2024-08-14 909e20941e45f8712c012db602034b47da0bfdb0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//
//  ObservableConvertibleType+Infallible.swift
//  RxSwift
//
//  Created by Shai Mishali on 27/08/2020.
//  Copyright © 2020 Krunoslav Zaher. All rights reserved.
//
 
public extension ObservableConvertibleType {
    /// Convert to an `Infallible`
    ///
    /// - returns: `Infallible<Element>`
    func asInfallible(onErrorJustReturn element: Element) -> Infallible<Element> {
        Infallible(self.asObservable().catchAndReturn(element))
    }
 
    /// Convert to an `Infallible`
    ///
    /// - parameter infallible: Fall back to this provided infallible on error
    ///
    ///
    /// - returns: `Infallible<Element>`
    func asInfallible(onErrorFallbackTo infallible: Infallible<Element>) -> Infallible<Element> {
        Infallible(self.asObservable().catch { _ in infallible.asObservable() })
    }
 
    /// Convert to an `Infallible`
    ///
    /// - parameter onErrorRecover: Recover with the this infallible closure
    ///
    /// - returns: `Infallible<Element>`
    func asInfallible(onErrorRecover: @escaping (Swift.Error) -> Infallible<Element>) -> Infallible<Element> {
        Infallible(asObservable().catch { onErrorRecover($0).asObservable() })
    }
}