Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

.just, .empty and .fail on AnyPublisher #155

Open
stefanomondino opened this issue Apr 14, 2023 · 1 comment · May be fixed by #156
Open

.just, .empty and .fail on AnyPublisher #155

stefanomondino opened this issue Apr 14, 2023 · 1 comment · May be fixed by #156

Comments

@stefanomondino
Copy link

I was wondering if there was a reason to not include in this (awesome) library some utility methods to simplify usage of Just, Fail and Empty, which requires an eraseToAnyPublisher() in so many scenarios.

I was thinking about something like this

public extension AnyPublisher {
    static func just(_ value: Output) -> AnyPublisher<Output, Failure> {
        Just(value)
            .setFailureType(to: Failure.self)
            .eraseToAnyPublisher()
    }
    static func empty() -> AnyPublisher<Output, Failure> {
        Empty()
            .setFailureType(to: Failure.self)
            .eraseToAnyPublisher()
    }
    
    static func fail(_ error: Failure) -> AnyPublisher<Output, Failure> {
        Fail(error: error).eraseToAnyPublisher()
    }
}

this could allow something like

func somePublisherValue() -> AnyPublisher<String, Never> {
.just("hey")
// instead of Just("hey").eraseToAnyPublisher()
}

This should also be super-useful in complex flatMaps with AnyPublishers as return values and some guard/let that always returns a Just/Fail

Is it something that could be useful or it's pointless? Am I missing something? Is it already there and I can't see it? :D

Cheers and thanks (as usual) for the awesome work.

@Oni-zerone
Copy link

This could be really useful!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants