diff options
| author | Mark Rousskov <mark.simulacrum@gmail.com> | 2018-07-26 09:18:40 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-07-26 09:18:40 -0600 |
| commit | 858adfe21dead8b0b2df16a5fc3ac4e8759a9c4e (patch) | |
| tree | 93aacde4d81dcd07f0c1644f1bfb435b03f740e6 /src/rustllvm/RustWrapper.cpp | |
| parent | 091a10e0eb5a86ace454b23c7ed2f1aaefb5b969 (diff) | |
| parent | bce8a91f34e63a4ed87a6d6351bf67a82306afbd (diff) | |
| download | rust-858adfe21dead8b0b2df16a5fc3ac4e8759a9c4e.tar.gz rust-858adfe21dead8b0b2df16a5fc3ac4e8759a9c4e.zip | |
Rollup merge of #52721 - cramertj:try-poll, r=aturon
std::ops::Try impl for std::task::Poll I originally left out the `Try` impl for `Poll` because I was curious if we needed it, and @MajorBreakfast and I had discussed the potential for it to introduce confusion about exactly what control-flow was happening at different points. However, after porting a pretty significant chunk of Fuchsia over to futures 0.3, I discovered that I was *constantly* having to do repetitive matching on `Poll<Result<...>>` or `Poll<Option<Result<...>>>` in order to propagate errors correctly. `try_poll` (propagate `Poll::Ready(Err(..))`s) helped in some places, but it was far more common to need some form of conversion between `Result`, `Poll<Result<...>>`, and `Poll<Option<Result<...>>>`. The `Try` trait conveniently provides all of these conversions in addition to a more concise syntax (`?`), so I'd like to experiment with using these instead. cc @seanmonstar r? @aturon Note: this change means that far more futures 0.1 code can work without significant changes since it papers over the fact that `Result` is no longer at the top-level when using `Stream` and `Future` (since it's now `Poll<Result<...>>` or `Poll<Option<Result<...>>>` instead of `Result<Poll<..>>` and `Result<Poll<Option<...>>>`).
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
0 files changed, 0 insertions, 0 deletions
