rust - 有什么作用??生锈吗?
问题描述
这是它的一个例子:
let msg = stream.next().await.context("expected a message")??;
只是?
做了两次吗?如果是这样,为什么在这种情况下需要这样做?
解决方案
是的,只是?
做了两次;没有??
运营商。
stream
是一个WsStream
。WsStream
是在同一模块中定义的类型。WsStream
实现Stream
。
stream.next()
调用StreamExt::next
,它返回一个产生的未来Option<Self::Item>
。Self::Item
被定义为tungstenite::Result<Message>
( = Result<Message, tungstenite::Error>
) WsStream
。这意味着 的结果stream.next().await
是 type Option<Result<Message, tungstenite::Error>>
。
然后,context
应用于该值。Context
实现了 forOption<T>
和 for Result<T, E>
,但输出始终是 a Result
。但是,context
不会使任何东西变平,所以我们最终得到Result<Result<Message, tungstenite::Error>, anyhow::Error>
. 因此 的两个用途?
用于处理Result
s 的两个级别。
推荐阅读
- laravel - 使用 Phpunit/ 为什么 phpunit 会删除我数据库中的所有数据
- android - 安装 react-native-device-info 错误 android 后
- java - 在 Maven 构建的 EAR 中绑定文件
- perl - 无法安装 SOAP LITE
- laravel - laravel 集合形式的默认行数
- ios - Info.plist 文件中缺少目的字符串 - Xcode 10.1 和 iOS 10.0
- ros - 无法使用 urdf2webbots 工具从 urdf 转换 Kinova Arm
- haskell - 生成满足 QuickCheck 中特定属性的数据的最佳做法是什么?
- python - show_img() 函数在 python 中不起作用
- html - HTML 站点中的根相关链接,可在本地和 Web 上运行