diff --git a/dump.rdb b/dump.rdb index 5cddf864..854e08d2 100644 Binary files a/dump.rdb and b/dump.rdb differ diff --git a/src/SUMMARY.md b/src/SUMMARY.md index a6f47aec..6361a56b 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -115,30 +115,29 @@ - [Macro 宏编程](advance/macro.md) + - [async/await 异步编程](advance/async/intro.md) + - [async 编程入门](advance/async/getting-started.md) + - [底层探秘: Future 执行与任务调度](advance/async/future-excuting.md) + - [定海神针 Pin 和 Unpin](advance/async/pin-unpin.md) + - [async/await 和 Stream 流处理](advance/async/async-await.md) + - [同时运行多个 Future](advance/async/multi-futures-simultaneous.md) + - [一些疑难问题的解决办法](advance/async/pain-points-and-workarounds.md) + - [实践应用:Async Web 服务器](advance/async/web-server.md) + +- [进阶实战: 实现一个简单 redis](advance-practice/intro.md) + - [tokio 概览](advance-practice/overview.md) + - [使用初印象](advance-practice/getting-startted.md) + - [创建异步任务](advance-practice/spawning.md) + - [共享状态](advance-practice/shared-state.md) + - [消息传递](advance-practice/channels.md) + - [I/O](advance-practice/io.md) + - [解析数据帧](advance-practice/frame.md) + - [深入 async](advance-practice/async.md) + - [select](advance-practice/select.md) + - [类似迭代器的 Stream](advance-practice/stream.md)) + - [优雅的关闭](advance-practice/graceful-shutdown.md) + - [异步跟同步共存](advance-practice/bridging-with-sync.md) -- [Rust 异步编程](async-rust/intro.md) - - - [async/await 异步编程](async-rust/async/intro.md) - - [async 编程入门](async-rust/async/getting-started.md) - - [底层探秘: Future 执行与任务调度](async-rust/async/future-excuting.md) - - [定海神针 Pin 和 Unpin](async-rust/async/pin-unpin.md) - - [async/await 和 Stream 流处理](async-rust/async/async-await.md) - - [同时运行多个 Future](async-rust/async/multi-futures-simultaneous.md) - - [一些疑难问题的解决办法](async-rust/async/pain-points-and-workarounds.md) - - [实践应用:Async Web 服务器](async-rust/async/web-server.md) - - [Tokio 使用指南](async-rust/tokio/intro.md) - - [tokio 概览](async-rust/tokio/overview.md) - - [使用初印象](async-rust/tokio/getting-startted.md) - - [创建异步任务](async-rust/tokio/spawning.md) - - [共享状态](async-rust/tokio/shared-state.md) - - [消息传递](async-rust/tokio/channels.md) - - [I/O](async-rust/tokio/io.md) - - [解析数据帧](async-rust/tokio/frame.md) - - [深入 async](async-rust/tokio/async.md) - - [select](async-rust/tokio/select.md) - - [类似迭代器的 Stream](async-rust/tokio/stream.md)) - - [优雅的关闭](async-rust/tokio/graceful-shutdown.md) - - [异步跟同步共存](async-rust/tokio/bridging-with-sync.md) - [Rust 难点攻关](difficulties/intro.md) - [切片和切片引用](difficulties/slice.md) diff --git a/src/async-rust/tokio/async.md b/src/advance-practice/async.md similarity index 100% rename from src/async-rust/tokio/async.md rename to src/advance-practice/async.md diff --git a/src/async-rust/tokio/bridging-with-sync.md b/src/advance-practice/bridging-with-sync.md similarity index 100% rename from src/async-rust/tokio/bridging-with-sync.md rename to src/advance-practice/bridging-with-sync.md diff --git a/src/async-rust/tokio/channels.md b/src/advance-practice/channels.md similarity index 100% rename from src/async-rust/tokio/channels.md rename to src/advance-practice/channels.md diff --git a/src/async-rust/tokio/frame.md b/src/advance-practice/frame.md similarity index 100% rename from src/async-rust/tokio/frame.md rename to src/advance-practice/frame.md diff --git a/src/async-rust/tokio/getting-startted.md b/src/advance-practice/getting-startted.md similarity index 100% rename from src/async-rust/tokio/getting-startted.md rename to src/advance-practice/getting-startted.md diff --git a/src/async-rust/tokio/graceful-shutdown.md b/src/advance-practice/graceful-shutdown.md similarity index 100% rename from src/async-rust/tokio/graceful-shutdown.md rename to src/advance-practice/graceful-shutdown.md diff --git a/src/advance-practice/intro.md b/src/advance-practice/intro.md new file mode 100644 index 00000000..1b30478e --- /dev/null +++ b/src/advance-practice/intro.md @@ -0,0 +1,9 @@ +# 进阶实战: 实现一个简单 redis + +在入门实战,你可以说众览半山不咋小,但是能坚持到这里,甚至当完成后,就真的是一览众山小,余敌皆鱼虾了。 + +在进阶实战中,我们要来真的了,之前的简单命令行程序,是真的简单,但是这次的简单 redis 是真的不简单,在这里你将被迫使用十八般武艺,特别的,我们还将学会 Rust 异步镇山之宝 `tokio` 包的使用。 + + +> 本章在内容上大量借鉴和翻译了 tokio 官方文档[Tokio Tutorial](https://tokio.rs/tokio/tutorial), 但是重新组织了内容形式并融入了很多自己的见解和感悟,给大家提供更好的可读性和知识扩展性 + diff --git a/src/async-rust/tokio/io.md b/src/advance-practice/io.md similarity index 100% rename from src/async-rust/tokio/io.md rename to src/advance-practice/io.md diff --git a/src/async-rust/tokio/overview.md b/src/advance-practice/overview.md similarity index 100% rename from src/async-rust/tokio/overview.md rename to src/advance-practice/overview.md diff --git a/src/async-rust/tokio/select.md b/src/advance-practice/select.md similarity index 100% rename from src/async-rust/tokio/select.md rename to src/advance-practice/select.md diff --git a/src/async-rust/tokio/shared-state.md b/src/advance-practice/shared-state.md similarity index 100% rename from src/async-rust/tokio/shared-state.md rename to src/advance-practice/shared-state.md diff --git a/src/async-rust/tokio/spawning.md b/src/advance-practice/spawning.md similarity index 100% rename from src/async-rust/tokio/spawning.md rename to src/advance-practice/spawning.md diff --git a/src/async-rust/tokio/stream.md b/src/advance-practice/stream.md similarity index 100% rename from src/async-rust/tokio/stream.md rename to src/advance-practice/stream.md diff --git a/src/async-rust/async/async-await.md b/src/advance/async/async-await.md similarity index 100% rename from src/async-rust/async/async-await.md rename to src/advance/async/async-await.md diff --git a/src/async-rust/async/future-excuting.md b/src/advance/async/future-excuting.md similarity index 100% rename from src/async-rust/async/future-excuting.md rename to src/advance/async/future-excuting.md diff --git a/src/async-rust/async/getting-started.md b/src/advance/async/getting-started.md similarity index 100% rename from src/async-rust/async/getting-started.md rename to src/advance/async/getting-started.md diff --git a/src/async-rust/intro.md b/src/advance/async/intro.md similarity index 52% rename from src/async-rust/intro.md rename to src/advance/async/intro.md index 0e5123fd..57281dca 100644 --- a/src/async-rust/intro.md +++ b/src/advance/async/intro.md @@ -1,11 +1,9 @@ -# Rust 异步编程 +# 异步编程 + 在艰难的学完 Rust 入门和进阶所有的 70 个章节后,我们终于来到了这里。假如之前攀登的是珠穆朗玛峰,那么现在攀登的就是乔戈里峰( 比珠峰还难攀爬... )。 -如果你想开发 Web 服务器、数据库驱动、消息服务等需要高并发的服务,那么本章的内容将值得认真对待和学习,将从以下方面深入讲解 Rust 的异步编程: +如果你想开发 Web 服务器、数据库驱动、消息服务等需要高并发的服务,那么本章的内容将值得认真对待和学习。 + +接下来,我们将深入了解 async/await 的使用方式及背后的原理。 -- Rust 异步编程的通用概念介绍 -- Future 以及异步任务调度 -- async/await 和 Pin/Unpin -- 异步编程常用的三方库 -- tokio 库 -- 一些示例 \ No newline at end of file +> 本章在内容上大量借鉴和翻译了原版英文书籍[Asynchronous Programming In Rust](https://rust-lang.github.io/async-book/01_getting_started/01_chapter.html), 特此感谢 diff --git a/src/async-rust/async/multi-futures-simultaneous.md b/src/advance/async/multi-futures-simultaneous.md similarity index 100% rename from src/async-rust/async/multi-futures-simultaneous.md rename to src/advance/async/multi-futures-simultaneous.md diff --git a/src/async-rust/async/pain-points-and-workarounds.md b/src/advance/async/pain-points-and-workarounds.md similarity index 100% rename from src/async-rust/async/pain-points-and-workarounds.md rename to src/advance/async/pain-points-and-workarounds.md diff --git a/src/async-rust/async/pin-unpin.md b/src/advance/async/pin-unpin.md similarity index 100% rename from src/async-rust/async/pin-unpin.md rename to src/advance/async/pin-unpin.md diff --git a/src/async-rust/async/web-server.md b/src/advance/async/web-server.md similarity index 100% rename from src/async-rust/async/web-server.md rename to src/advance/async/web-server.md diff --git a/src/async-rust/async/intro.md b/src/async-rust/async/intro.md deleted file mode 100644 index 0b55ac86..00000000 --- a/src/async-rust/async/intro.md +++ /dev/null @@ -1,5 +0,0 @@ -# 异步编程 - -接下来,我们将深入了解 async/await 的使用方式及背后的原理。 - -> 本章在内容上大量借鉴和翻译了原版英文书籍[Asynchronous Programming In Rust](https://rust-lang.github.io/async-book/01_getting_started/01_chapter.html), 特此感谢 diff --git a/src/async-rust/tokio/intro.md b/src/async-rust/tokio/intro.md deleted file mode 100644 index 5a7c043f..00000000 --- a/src/async-rust/tokio/intro.md +++ /dev/null @@ -1,8 +0,0 @@ -# Tokio 使用指南 - -在上一个章节中,我们提到了 Rust 异步编程的限制,其中之一就是你必须引入社区提供的异步运行时,其中最有名的就是 `tokio`。 - -在本章中,我们一起来看看 `tokio` 到底有什么优势,以及该如何使用它。 - -> 本章在内容上大量借鉴和翻译了 tokio 官方文档[Tokio Tutorial](https://tokio.rs/tokio/tutorial), 但是重新组织了内容形式并融入了很多自己的见解和感悟,给大家提供更好的可读性和知识扩展性 -