Skip to content

Commit

Permalink
Merge pull request #789 from kwkwc/fix
Browse files Browse the repository at this point in the history
Update ch20-01-single-threaded.md
  • Loading branch information
KaiserY committed Apr 21, 2024
2 parents 3b2fea1 + 60999ca commit 2541635
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion src/ch20-01-single-threaded.md
Expand Up @@ -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 浏览器发送给服务端的指令。

Expand Down

0 comments on commit 2541635

Please sign in to comment.