diff --git a/resources/futures_animation.pptx b/resources/futures_animation.pptx index c5d7f3f..af26a4c 100644 Binary files a/resources/futures_animation.pptx and b/resources/futures_animation.pptx differ diff --git a/src/1_futures_in_rust.md b/src/1_futures_in_rust.md index fc18b1d..7467811 100644 --- a/src/1_futures_in_rust.md +++ b/src/1_futures_in_rust.md @@ -145,11 +145,8 @@ communicate with one another directly.**. This design is what gives the futures framework it's power and flexibility and allows the Rust standard library to provide an ergonomic, zero-cost abstraction for us to use. -In an effort to try to visualize how these parts work together in a simple program I created this -GIF. Note that the code is "pseudo-Rust" to help us focus on the important parts: - -#### Fig 2: Simplified flow in an async system -![futures_animation](./assets/futures_animation.gif) +In an effort to try to visualize how these parts work together I put together +a set of slides in the next chapter that I hope will help. The two most popular runtimes for Futures as of writing this is: diff --git a/src/2_a_mental_model_for_futures.md b/src/2_a_mental_model_for_futures.md new file mode 100644 index 0000000..2ea6d43 --- /dev/null +++ b/src/2_a_mental_model_for_futures.md @@ -0,0 +1,71 @@ +# Get a mental model of how Futures and runtimes work + +In this chapter we'll try to build a high level mental model of how Futures and +runtimes work together. Just note that the code itself is "pseudo-rust" due to space +restrictions and clarity. The main goal in this part is to create a high level +understanding to make it easier to learn. This is not the only way to model this +since we're making assumtions on runtime specifics that can vary a great deal, +but it's the way I found it easiest to build upon. + +>Click on a page to open a larger view of it in a new tab. +> +>_Thanks to [@ckaran](https://github.com/ckaran) for feedback and [discussions](https://github.com/cfsamson/books-futures-explained/issues/25) on +this chapter._ + + + slide1 + + + slide2 + + + slide3 + + + slide4 + + + slide5 + + + slide6 + + + slide7 + + + slide8 + + + slide9 + + + slide10 + + + slide11 + + + slide12 + + + slide13 + + + slide14 + + + slide15 + + + slide16 + + + slide17 + + + slide18 + + + slide19 + \ No newline at end of file diff --git a/src/2_waker_context.md b/src/3_waker_context.md similarity index 100% rename from src/2_waker_context.md rename to src/3_waker_context.md diff --git a/src/3_generators_async_await.md b/src/4_generators_async_await.md similarity index 100% rename from src/3_generators_async_await.md rename to src/4_generators_async_await.md diff --git a/src/4_pin.md b/src/5_pin.md similarity index 100% rename from src/4_pin.md rename to src/5_pin.md diff --git a/src/8_finished_example.md b/src/7_finished_example.md similarity index 100% rename from src/8_finished_example.md rename to src/7_finished_example.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 2a659f0..10b9236 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -4,10 +4,11 @@ - [Background information](./0_background_information.md) - [Futures in Rust](./1_futures_in_rust.md) -- [Waker and Context](./2_waker_context.md) -- [Generators and async/await](./3_generators_async_await.md) -- [Pin](./4_pin.md) +- [A mental model for Futures](./2_a_mental_model_for_futures.md) +- [Waker and Context](./3_waker_context.md) +- [Generators and async/await](./4_generators_async_await.md) +- [Pin](./5_pin.md) - [Implementing Futures](./6_future_example.md) -- [Finished example (editable)](./8_finished_example.md) +- [Finished example (editable)](./7_finished_example.md) [Conclusion and exercises](./conclusion.md) diff --git a/src/assets/slides/Slide10.PNG b/src/assets/slides/Slide10.PNG index 37e7412..41fe49b 100644 Binary files a/src/assets/slides/Slide10.PNG and b/src/assets/slides/Slide10.PNG differ diff --git a/src/assets/slides/Slide11.PNG b/src/assets/slides/Slide11.PNG index aab1e00..0c85759 100644 Binary files a/src/assets/slides/Slide11.PNG and b/src/assets/slides/Slide11.PNG differ diff --git a/src/assets/slides/Slide12.PNG b/src/assets/slides/Slide12.PNG index 162cdcb..9973478 100644 Binary files a/src/assets/slides/Slide12.PNG and b/src/assets/slides/Slide12.PNG differ diff --git a/src/assets/slides/Slide13.PNG b/src/assets/slides/Slide13.PNG index ae5128e..5affec2 100644 Binary files a/src/assets/slides/Slide13.PNG and b/src/assets/slides/Slide13.PNG differ diff --git a/src/assets/slides/Slide14.PNG b/src/assets/slides/Slide14.PNG index 3c46165..a4743cb 100644 Binary files a/src/assets/slides/Slide14.PNG and b/src/assets/slides/Slide14.PNG differ diff --git a/src/assets/slides/Slide15.PNG b/src/assets/slides/Slide15.PNG index a57f8cd..f888b01 100644 Binary files a/src/assets/slides/Slide15.PNG and b/src/assets/slides/Slide15.PNG differ diff --git a/src/assets/slides/Slide16.PNG b/src/assets/slides/Slide16.PNG index 0e9b3e8..397607b 100644 Binary files a/src/assets/slides/Slide16.PNG and b/src/assets/slides/Slide16.PNG differ diff --git a/src/assets/slides/Slide17.PNG b/src/assets/slides/Slide17.PNG index acfc7a8..115f2b0 100644 Binary files a/src/assets/slides/Slide17.PNG and b/src/assets/slides/Slide17.PNG differ diff --git a/src/assets/slides/Slide18.PNG b/src/assets/slides/Slide18.PNG new file mode 100644 index 0000000..28a6522 Binary files /dev/null and b/src/assets/slides/Slide18.PNG differ diff --git a/src/assets/slides/Slide19.PNG b/src/assets/slides/Slide19.PNG new file mode 100644 index 0000000..ce2d56a Binary files /dev/null and b/src/assets/slides/Slide19.PNG differ diff --git a/src/assets/slides/Slide2.PNG b/src/assets/slides/Slide2.PNG index 0c1a279..b3ab004 100644 Binary files a/src/assets/slides/Slide2.PNG and b/src/assets/slides/Slide2.PNG differ diff --git a/src/assets/slides/Slide3.PNG b/src/assets/slides/Slide3.PNG index c6d5b71..2a6d137 100644 Binary files a/src/assets/slides/Slide3.PNG and b/src/assets/slides/Slide3.PNG differ diff --git a/src/assets/slides/Slide4.PNG b/src/assets/slides/Slide4.PNG index aab1fa2..7473ffe 100644 Binary files a/src/assets/slides/Slide4.PNG and b/src/assets/slides/Slide4.PNG differ diff --git a/src/assets/slides/Slide5.PNG b/src/assets/slides/Slide5.PNG index e860391..5ac4f11 100644 Binary files a/src/assets/slides/Slide5.PNG and b/src/assets/slides/Slide5.PNG differ diff --git a/src/assets/slides/Slide6.PNG b/src/assets/slides/Slide6.PNG index a9633b0..b548d60 100644 Binary files a/src/assets/slides/Slide6.PNG and b/src/assets/slides/Slide6.PNG differ diff --git a/src/assets/slides/Slide7.PNG b/src/assets/slides/Slide7.PNG index b6af1a5..23122c1 100644 Binary files a/src/assets/slides/Slide7.PNG and b/src/assets/slides/Slide7.PNG differ diff --git a/src/assets/slides/Slide8.PNG b/src/assets/slides/Slide8.PNG index 916bb81..2b456c6 100644 Binary files a/src/assets/slides/Slide8.PNG and b/src/assets/slides/Slide8.PNG differ diff --git a/src/assets/slides/Slide9.PNG b/src/assets/slides/Slide9.PNG index d5e0c61..d3499b2 100644 Binary files a/src/assets/slides/Slide9.PNG and b/src/assets/slides/Slide9.PNG differ