Comments (5)
I don't think these'd be too difficult to implement, but @carllerche do you have a use case in mind as well? It might be good to have one just to help designing the APIs to work with it.
from futures-rs.
Off the top of my head, a Task
is managing a Tcp connection for a client. The client handle sends requests to the connection task using a channel. The connection errors. It would be nice for the channel that sends requests to be closed cleanly. Aka, the consuming end can drop knowing that it received all pending requests and completed them w/ an error and that the client handle will not be able to send any further requests to the dead connection.
Hope this makes sense.
from futures-rs.
I've run into the exact problem @carllerche describes with mpsc::channel. Atomic close and drain from the receiver side would be nice to have here.
from futures-rs.
Ok I think that makes sense yeah. I think this is going to need coordination/APIs on both ends. That is, the producer half will need a Result
of some form to hand back the message or at least indicate that delivery failed. The production half probably just needs a try_release
method of some form then that attempts to shut down the channel but fails if there's items in flight.
I think for stream::channel
we have a vector to return the item with a result, but for oneshot
we do not. This can likely be solved by just returning a result from complete
, akin to SendError
in mpsc
from futures-rs.
added to channel
in #245
from futures-rs.
Related Issues (20)
- `AtomicWaker::take` performance issue HOT 1
- feature flag for debugging to make join functions
- Add `TryStreamExt::try_{any,all}` to mirror `StreamExt::{any,all}`
- Stream: finish after returning the first error HOT 1
- Streams: `wake` may not poll futures if two streams are combined (and only one future is polled)
- Add `ResultFuture`
- futures-util does not compile if size of usize is not size of raw pointers HOT 5
- FusedFuture is incoherent
- Issue on iphone with atomic-waker HOT 2
- FuturesUnordered produces invalid reads and writes under Valgrind HOT 2
- Infinite loop caused by invalid UTF-8 bytes
- Potential unsoundness in FuturesUnordered HOT 2
- Peekable::try_peek HOT 1
- `futures_task::waker_ref()` is unsound
- `TryFlattenUnordered` doesn't impl `TryStream` HOT 1
- Provide `Deref{Mut}` implementation for `AllowStdIO`. HOT 1
- Document what features are required for feature-gated items HOT 1
- Warn when PR is opened for 0.3/0.1 branch HOT 4
- Feature request: impl std::iter::Extend<Fut> for FuturesUnordered HOT 1
- Analogue of .last() method
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from futures-rs.