---
title: Publishers.CompactMap
framework: combine
role: symbol
role_heading: Structure
path: combine/publishers/compactmap
---

# Publishers.CompactMap

A publisher that republishes all non-nil results of calling a closure with each received element.

## Declaration

```swift
struct CompactMap<Upstream, Output> where Upstream : Publisher
```

## Topics

### Creating a compact map publisher

- [init(upstream:transform:)](combine/publishers/compactmap/init(upstream:transform:).md)

### Declaring supporting types

- [Publishers.Output](combine/publishers/output.md)
- [Publishers.CompactMap.Failure](combine/publishers/compactmap/failure.md)

### Mapping elements

- [map(_:)](combine/publishers/compactmap/map(_:).md)
- [compactMap(_:)](combine/publishers/compactmap/compactmap(_:).md)

### Inspecting publisher properties

- [upstream](combine/publishers/compactmap/upstream.md)
- [transform](combine/publishers/compactmap/transform.md)

## Relationships

### Conforms To

- [Publisher](combine/publisher.md)

## See Also

### Filtering elements

- [Publishers.Filter](combine/publishers/filter.md)
- [Publishers.TryFilter](combine/publishers/tryfilter.md)
- [Publishers.TryCompactMap](combine/publishers/trycompactmap.md)
- [Publishers.RemoveDuplicates](combine/publishers/removeduplicates.md)
- [Publishers.TryRemoveDuplicates](combine/publishers/tryremoveduplicates.md)
- [Publishers.ReplaceEmpty](combine/publishers/replaceempty.md)
- [Publishers.ReplaceError](combine/publishers/replaceerror.md)
