<!--
{
  "documentType" : "article",
  "framework" : "Combine",
  "identifier" : "/documentation/Combine/Publishers-Sequence-Publisher-Operators",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Publisher Operators"
}
-->

# Publisher Operators

Methods that create downstream publishers or subscribers to act on the elements they receive.

## Topics

### Mapping elements

[`func map<T>((Elements.Element) -> T) -> Publishers.Sequence<[T], Failure>`](/documentation/Combine/Publishers/Sequence/map(_:))

[`func scan<T>(T, (T, Publishers.Sequence<Elements, Failure>.Output) -> T) -> Publishers.Sequence<[T], Failure>`](/documentation/Combine/Publishers/Sequence/scan(_:_:))

[`func setFailureType<E>(to: E.Type) -> Publishers.Sequence<Elements, E>`](/documentation/Combine/Publishers/Sequence/setFailureType(to:))

[`func replaceNil<T>(with: T) -> Publishers.Sequence<[Publishers.Sequence<Elements, Failure>.Output], Failure>`](/documentation/Combine/Publishers/Sequence/replaceNil(with:))

### Filtering elements

[`func filter((Publishers.Sequence<Elements, Failure>.Output) -> Bool) -> Publishers.Sequence<[Publishers.Sequence<Elements, Failure>.Output], Failure>`](/documentation/Combine/Publishers/Sequence/filter(_:))

[`func compactMap<T>((Publishers.Sequence<Elements, Failure>.Output) -> T?) -> Publishers.Sequence<[T], Failure>`](/documentation/Combine/Publishers/Sequence/compactMap(_:))

[`func removeDuplicates() -> Publishers.Sequence<[Publishers.Sequence<Elements, Failure>.Output], Failure>`](/documentation/Combine/Publishers/Sequence/removeDuplicates())

### Reducing elements

[`func collect() -> Result<[Publishers.Sequence<Elements, Failure>.Output], Failure>.Publisher`](/documentation/Combine/Publishers/Sequence/collect())

[`func ignoreOutput() -> Empty<Publishers.Sequence<Elements, Failure>.Output, Failure>`](/documentation/Combine/Publishers/Sequence/ignoreOutput())

[`func reduce<T>(T, (T, Publishers.Sequence<Elements, Failure>.Output) -> T) -> Result<T, Failure>.Publisher`](/documentation/Combine/Publishers/Sequence/reduce(_:_:))

[`func tryReduce<T>(T, (T, Publishers.Sequence<Elements, Failure>.Output) throws -> T) -> Result<T, any Error>.Publisher`](/documentation/Combine/Publishers/Sequence/tryReduce(_:_:))

### Applying mathematical operations on elements

[`func count() -> Just<Int>`](/documentation/Combine/Publishers/Sequence/count()-5rrw2)

[`func count() -> Result<Int, Failure>.Publisher`](/documentation/Combine/Publishers/Sequence/count()-5hb52)

[`func count() -> Result<Int, Failure>.Publisher`](/documentation/Combine/Publishers/Sequence/count()-b8ct)

[`func max() -> Optional<Publishers.Sequence<Elements, Failure>.Output>.Publisher`](/documentation/Combine/Publishers/Sequence/max())

[`func max(by: (Publishers.Sequence<Elements, Failure>.Output, Publishers.Sequence<Elements, Failure>.Output) -> Bool) -> Optional<Publishers.Sequence<Elements, Failure>.Output>.Publisher`](/documentation/Combine/Publishers/Sequence/max(by:))

[`func min() -> Optional<Publishers.Sequence<Elements, Failure>.Output>.Publisher`](/documentation/Combine/Publishers/Sequence/min())

[`func min(by: (Publishers.Sequence<Elements, Failure>.Output, Publishers.Sequence<Elements, Failure>.Output) -> Bool) -> Optional<Publishers.Sequence<Elements, Failure>.Output>.Publisher`](/documentation/Combine/Publishers/Sequence/min(by:))

### Applying matching criteria to elements

[`func contains(Elements.Element) -> Result<Bool, Failure>.Publisher`](/documentation/Combine/Publishers/Sequence/contains(_:))

[`func contains(where: (Publishers.Sequence<Elements, Failure>.Output) -> Bool) -> Result<Bool, Failure>.Publisher`](/documentation/Combine/Publishers/Sequence/contains(where:))

[`func tryContains(where: (Publishers.Sequence<Elements, Failure>.Output) throws -> Bool) -> Result<Bool, any Error>.Publisher`](/documentation/Combine/Publishers/Sequence/tryContains(where:))

[`func allSatisfy((Publishers.Sequence<Elements, Failure>.Output) -> Bool) -> Result<Bool, Failure>.Publisher`](/documentation/Combine/Publishers/Sequence/allSatisfy(_:))

[`func tryAllSatisfy((Publishers.Sequence<Elements, Failure>.Output) throws -> Bool) -> Result<Bool, any Error>.Publisher`](/documentation/Combine/Publishers/Sequence/tryAllSatisfy(_:))

### Applying sequence operations to elements

[`func dropFirst(Int) -> Publishers.Sequence<DropFirstSequence<Elements>, Failure>`](/documentation/Combine/Publishers/Sequence/dropFirst(_:))

[`func drop(while: (Elements.Element) -> Bool) -> Publishers.Sequence<DropWhileSequence<Elements>, Failure>`](/documentation/Combine/Publishers/Sequence/drop(while:))

[`func append<S>(S) -> Publishers.Sequence<Elements, Failure>`](/documentation/Combine/Publishers/Sequence/append(_:)-45rm8)

[`func append(Publishers.Sequence<Elements, Failure>) -> Publishers.Sequence<Elements, Failure>`](/documentation/Combine/Publishers/Sequence/append(_:)-3dj6k)

[`func append(Publishers.Sequence<Elements, Failure>.Output...) -> Publishers.Sequence<Elements, Failure>`](/documentation/Combine/Publishers/Sequence/append(_:)-2knh4)

[`func prepend<S>(S) -> Publishers.Sequence<Elements, Failure>`](/documentation/Combine/Publishers/Sequence/prepend(_:)-1r564)

[`func prepend(Publishers.Sequence<Elements, Failure>) -> Publishers.Sequence<Elements, Failure>`](/documentation/Combine/Publishers/Sequence/prepend(_:)-71f7p)

[`func prepend(Publishers.Sequence<Elements, Failure>.Output...) -> Publishers.Sequence<Elements, Failure>`](/documentation/Combine/Publishers/Sequence/prepend(_:)-2ros1)

[`func prefix(Int) -> Publishers.Sequence<PrefixSequence<Elements>, Failure>`](/documentation/Combine/Publishers/Sequence/prefix(_:))

[`func prefix(while: (Elements.Element) -> Bool) -> Publishers.Sequence<[Elements.Element], Failure>`](/documentation/Combine/Publishers/Sequence/prefix(while:))

### Selecting specific elements

[`func first() -> Optional<Publishers.Sequence<Elements, Failure>.Output>.Publisher`](/documentation/Combine/Publishers/Sequence/first())

[`func first(where: (Publishers.Sequence<Elements, Failure>.Output) -> Bool) -> Optional<Publishers.Sequence<Elements, Failure>.Output>.Publisher`](/documentation/Combine/Publishers/Sequence/first(where:))

[`func last() -> Optional<Publishers.Sequence<Elements, Failure>.Output>.Publisher`](/documentation/Combine/Publishers/Sequence/last())

[`func last(where: (Publishers.Sequence<Elements, Failure>.Output) -> Bool) -> Optional<Publishers.Sequence<Elements, Failure>.Output>.Publisher`](/documentation/Combine/Publishers/Sequence/last(where:))

[`func output(at: Elements.Index) -> Optional<Publishers.Sequence<Elements, Failure>.Output>.Publisher`](/documentation/Combine/Publishers/Sequence/output(at:)-3r7zo)

[`func output(at: Elements.Index) -> Optional<Publishers.Sequence<Elements, Failure>.Output>.Publisher`](/documentation/Combine/Publishers/Sequence/output(at:)-9kto7)

[`func output(in: Range<Elements.Index>) -> Publishers.Sequence<[Publishers.Sequence<Elements, Failure>.Output], Failure>`](/documentation/Combine/Publishers/Sequence/output(in:)-6g2zc)

[`func output(in: Range<Elements.Index>) -> Publishers.Sequence<[Publishers.Sequence<Elements, Failure>.Output], Failure>`](/documentation/Combine/Publishers/Sequence/output(in:)-8l6yw)



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)