New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WIP] async
and .await
chapter with listings updates
#3908
Draft
chriskrycho
wants to merge
57
commits into
main
Choose a base branch
from
chriskrycho/chapter-async-await
base: main
Could not load branches
Branch not found: {{ refName }}
Could not load tags
Nothing to show
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+5,607
−722
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
We will primarily just be re-exporting this, though we may also have a couple cases where we choose to implement something small around it.
1. Introduce an integration tests crate. Structure it the way people *should* for large crates (although this is not that) and document why, including linking to a relevant post. 2. Add a basic integration test that verifies the re-export works as it should. (This is not exactly rocket science, but we want to make sure these things don’t just stop working on accident.) An open question that remains here: do we want some structure to the crate beyond the top level re-exports? My inclination at this moment is: no, because we don’t have any *motivation* for that, and naming things is difficult. (We cannot do `trpl::async`, for example, because `async` is a keyword!)
- 17.00: Introduction to the conceptual machinery. This is very nascent but has some decent bones. - 17.01: Trying to get at the foundations for tasks, laziness, etc.; this is *especially* incomplete. - 17.02: Just a paragraph I do not want to lose, which I think *will* be useful… eventually.
Add a fair bit more material about the `futures` executor and why we might prefer to use something else. With that motivation in place, have the readers add our `trpl` crate. (We can of course rename that crate, but it does the job for now.) Use it to get the equivalent of `#[tokio::main]` equivalent and incorporate it into an example.
😬 GitHub is straight up not having a good time rendering the full diff with all the listing changes... so I'm opening a new PR without the listings moving for now 😱 |
😂 Good job, GitHub! |
Move up the installation of the futures crate: get the initial example compiling as soon as possible (even though it is just "Hello, world!") and *then* explain what was going on.
- Update the instructions to install `trpl` instead of `futures`, and move the introductory text there. - Update the note about Tokio in 17.02 to describe both `futures` and `tokio`.
Re-exporting the macro does not work unless you have `tokio` as a direct dependency, because its expansion is in terms of Tokio doc-hidden items.
Add some listings which I can actually run, with `TODO` paths in them since I do not know what the numbers will be, since I have not actually finished with §0 or §1 yet!
Also rename the files to match their actual titles now that I know them. Or at least: know a good first pass for them.
chriskrycho
force-pushed
the
chriskrycho/chapter-async-await
branch
from
May 16, 2024 15:14
4f2eac9
to
1b65a13
Compare
- Introduce the relevant supporting features in `trpl`. - Add a couple listings to show how things do or do not work.
chriskrycho
force-pushed
the
chriskrycho/chapter-async-await
branch
from
May 16, 2024 20:06
1b65a13
to
519793d
Compare
- Incorporate a good discusion of the need to make sure that the `tx` in this example gets dropped. - Add more listings which show borrowing vs. moving a `tx`, covering the full territory in that example. - Add and test more re-exports in `trpl`. I made a conscious choice here *not* to use `future::join_all()` because that ends up getting into a discussion of `Pin`. I left a TODO item here for now because I think it is probably worth getting into, and that could be a good thing to transition to *after* this section.
chriskrycho
force-pushed
the
chriskrycho/chapter-async-await
branch
from
May 17, 2024 21:19
519793d
to
1042508
Compare
chriskrycho
force-pushed
the
chriskrycho/chapter-async-await
branch
from
May 22, 2024 19:23
1042508
to
dce2f83
Compare
chriskrycho
force-pushed
the
chriskrycho/chapter-async-await
branch
from
May 22, 2024 19:32
dce2f83
to
a9bc8f4
Compare
It should manage its own dependencies.
Wherever it makes sense to elide these for the sake of clarity, do so!
chriskrycho
force-pushed
the
chriskrycho/chapter-async-await
branch
2 times, most recently
from
May 22, 2024 21:53
ba2e1ca
to
a5dd285
Compare
chriskrycho
force-pushed
the
chriskrycho/chapter-async-await
branch
from
May 23, 2024 14:09
a5dd285
to
6b17385
Compare
chriskrycho
force-pushed
the
chriskrycho/chapter-async-await
branch
from
May 24, 2024 17:22
6b17385
to
383a374
Compare
I am not 100% sure we will keep these, but right now they feel useful for helping see how `async` can help solve some of these problems.
Tasks to be done: - [ ] Update all listing *output* to match what it should be for the version of Rust we are using at the time we actually merge this. - [ ] (Re-)Update all references to listings to be correct.
chriskrycho
force-pushed
the
chriskrycho/chapter-async-await
branch
from
May 24, 2024 23:13
383a374
to
48400ae
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Note: Work is actually happening on #3909 – this one includes everything that one includes and the listings rework—but that means GitHub has a very bad time trying to render the diff. I am maintaining this branch and PR so that I can keep the listings in reasonably good shape as we make changes to
src
as it stands today, so that when we finally go to merge this thing it is not an extra pile of work all at once.As of the time of opening the PR, this is the earliest possible draft material. 😅
A quick note for folks watching the repo: the state of this is roughly: Ready for @carols10cents to leave comments, and we’ll invite others to do so as well over time, but please don’t comment-bomb us at this phase! 😂