Merge pull request #789 from kwkwc/fix

Update ch20-01-single-threaded.md
This commit is contained in:
KaiserY 2024-04-21 19:13:21 +08:00 committed by GitHub
commit 25416357b1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -73,7 +73,7 @@ Connection established!
我们创建了一个 `http_request` 变量来收集浏览器发送给服务端的请求行。这里增加了 `Vec<_>` 类型注解表明希望将这些行收集到一个 vector 中。
`BufReader` 实现了 `std::io::BufRead` trait它提供了 `lines` 方法。`lines` 方法通过遇到换行符newline字节就切分数据流的方式返回一个 `Result<String,std::io::Error>` 的迭代器。为了获取每一个 `String`,通过 map 并 `unwrap` 每一个 `Result`。如果数据不是有效的 UTF-8 编码或者读取流遇到问题时,`Result` 可能是一个错误。一如既往生产环境的程序应该更优雅地处理这些错误,不过出于简单的目的我们选择在错误情况下停止程序。
`BufReader` 实现了 `std::io::BufRead` trait它提供了 `lines` 方法。`lines` 方法通过遇到换行符newline字节就切分数据流的方式返回一个 `Result<String, std::io::Error>` 的迭代器。为了获取每一个 `String`,通过 map 并 `unwrap` 每一个 `Result`。如果数据不是有效的 UTF-8 编码或者读取流遇到问题时,`Result` 可能是一个错误。一如既往生产环境的程序应该更优雅地处理这些错误,不过出于简单的目的我们选择在错误情况下停止程序。
浏览器通过连续发送两个换行符来代表一个 HTTP 请求的结束,所以为了从流中获取一个请求,我们获取行直到它们不为空。一旦将这些行收集进 vector就可以使用友好的 debug 格式化打印它们,以便看看 web 浏览器发送给服务端的指令。