Skip to content

Add new pipe convenience methods for the async readers#420

Open
FranzBusch wants to merge 1 commit into
apple:mainfrom
FranzBusch:fb-async-reader-to-writer
Open

Add new pipe convenience methods for the async readers#420
FranzBusch wants to merge 1 commit into
apple:mainfrom
FranzBusch:fb-async-reader-to-writer

Conversation

@FranzBusch
Copy link
Copy Markdown
Member

@FranzBusch FranzBusch commented May 15, 2026

Motivation

Often developers want to pipe the contents of an async reader into a writer. This is a common scenario in asynchronous streaming APIs. Readers are modeling sources of data where writers are modeling sinks. As an example imagine reading from a network socket and writing the contents into a file. Importantly, the entire operation needs to uphold backpressure.

Modifications

This PR adds 2 new pipe methods to each reader one for each writer type. Depending on the buffer ownership those methods will the pipe operation is copy free, requires a copy or even requires an intermediate allocation for copying. The method parameter labels are trying to express what the operation does.

Result

It is very easy for developers now to move elements from readers into writers.

## Motivation

Often developers want to pipe the contents of an async reader into a writer. This is a common scenario in asynchronous streaming APIs. Readers are modeling sources of data where writers are modeling sinks. As an example imagine reading from a network socket and writing the contents into a file. Importantly, the entire operation needs to uphold backpressure.

## Modifications

This PR adds 2 new `pipe` methods to each reader one for each writer type. Depending on the buffer ownership those methods will the pipe operation is copy free, requires a copy or even requires an intermediate allocation for copying. The method parameter labels are trying to express what the operation does.

## Result

It is very easy for developers now to move elements from readers into writers.
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 this pull request may close these issues.

1 participant