---
title: Publishers.Scan
framework: combine
role: symbol
role_heading: Structure
path: combine/publishers/scan
---

# Publishers.Scan

A publisher that transforms elements from the upstream publisher by providing the current element to a closure along with the last value returned by the closure.

## Declaration

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

## Topics

### Creating a scan publisher

- [init(upstream:initialResult:nextPartialResult:)](combine/publishers/scan/init(upstream:initialresult:nextpartialresult:).md)

### Declaring supporting types

- [Publishers.Output](combine/publishers/output.md)
- [Publishers.Scan.Failure](combine/publishers/scan/failure.md)

### Inspecting publisher properties

- [upstream](combine/publishers/scan/upstream.md)
- [initialResult](combine/publishers/scan/initialresult.md)
- [nextPartialResult](combine/publishers/scan/nextpartialresult.md)

## Relationships

### Conforms To

- [Publisher](combine/publisher.md)

## See Also

### Mapping elements

- [Publishers.Map](combine/publishers/map.md)
- [Publishers.TryMap](combine/publishers/trymap.md)
- [Publishers.MapError](combine/publishers/maperror.md)
- [Publishers.TryScan](combine/publishers/tryscan.md)
- [Publishers.SetFailureType](combine/publishers/setfailuretype.md)
