summaryrefslogtreecommitdiff
path: root/crates/tor-basic-utils/src/futures.rs
Commit message (Collapse)AuthorAgeFilesLines
* clippy: Consolidate many lints in maint/add_warningIan Jackson2022-06-241-2/+9
| | | | | | Found these by disabling the nightly dbg macro special case. Now, we have a mechanism for globally adding suppressions to tests, we can use that instead.
* Typo fixes (automated with "typos").Nick Mathewson2022-05-241-4/+4
|
* Suppress clippy warnings in tor-basic-utils.Nick Mathewson2022-05-231-0/+1
| | | | These are warnings that we've decided it's okay to suppress elsewhere.
* prepare_send_from: clippy: Have dprintln explicitly return ()Ian Jackson2022-05-231-1/+1
|
* prepare_send_from: clippy: Avoid a lintIan Jackson2022-05-231-2/+1
| | | | I think this is worse code, but it's not *significantly* worse.
* prepare_send_from: clippy: Add missing docsIan Jackson2022-05-231-11/+18
| | | | I intend to reintroduce this in its own MR.
* prepare_send_from: clippy: Replace two unwrapsIan Jackson2022-05-231-2/+6
|
* prepare_send_from: Break out get_output! macroIan Jackson2022-05-231-2/+11
| | | | So we can change unwrap to expect, which makes this too long to repeat.
* prepare_send_from: docs and comments improvementsIan Jackson2022-05-231-13/+115
| | | | Apropos review.
* prepare_send_from: Add testsIan Jackson2022-05-231-0/+122
| | | | | | When I added these tests, they didn't find any bugs in my own implementation, but I did find a bug in futures::future::unfold. See the in-code comment.
* channel: Provide and use Sink::prepare_send_fromIan Jackson2022-05-231-0/+292
This is a general-purpose implementation of the ad-hoc approach currently taken in (eg) crates/tor-proto/src/channel/reactor.rs, with an API intended to defned against the more obvious mistakes. This allows us to separate the two concerns: the channel reactor can focus on handling channel cells and control messages and is over 2.5x shorter. The complexity of the manual sink implementation, and the machinery needed to avoid having to suspend while holding an item, are dealt with separately. That separate implemenation now has proper documentation. (Tests are in the nest commit to avoid this one being even more unwieldy.) We use `extend` to define this as an extension trait. A competitor is `ext` but in my personal projects I have found `extend` slightly better.