设计取舍
前五部分沿三条主线读完了代码,这一部分只有一页,把散在各页的取舍收到一起。reqwest 自己写的代码集中在 API、默认值和 Connector,其余几层都是选来的:tower-http 的重定向和解压、tower 的重试、hyper-util 的池、rustls 的握手。所以这一页问的是「选了什么、默认开了什么、怎么拼,各付了多少」,数字一律引用本卷各页的实测,不重新测。
- 设计取舍:默认的四个 feature 和池、重定向、重试各自的好处与实测代价,以及默认没有的超时、
User-Agent、解压;hyper-util legacyClient的限制怎么变成 reqwest 的限制;LayeredService这种编译期拼好的栈换来零装箱、付出固定顺序;错误延迟到send;async、blocking、wasm 三套同名实现的差别;0.13 把默认 TLS 换成 rustls 加平台校验器,换来什么、付出什么、哪些没换。
读完这一页可以接着看 08 在本站中:本站锁在 0.12.28,上面这些取舍落到一个真实项目里是什么样子。
💬 关联讨论
发起讨论加载中...