Wil*_*ill 2 operator-keyword rust
这里是它的一个例子动作:
let msg = stream.next().await.context("expected a message")??;
Run Code Online (Sandbox Code Playgroud)
只是?做了两次吗?如果是这样,为什么在这种情况下需要这样做?
是的,它只是?做了两次;没有??运营商。
stream是一个WsStream。WsStream是在同一个模块中定义的类型。WsStream实施Stream.
stream.next()invokes StreamExt::next,它返回一个产生的未来Option<Self::Item>。Self::Item被定义为tungstenite::Result<Message>( = Result<Message, tungstenite::Error>) for WsStream。这意味着 的结果stream.next().await是 类型Option<Result<Message, tungstenite::Error>>。
然后,context应用于该值。Context为Option<T>和 实现Result<T, E>,但输出始终为Result。然而,context不会压平任何东西,所以我们最终得到Result<Result<Message, tungstenite::Error>, anyhow::Error>. 因此, 的两种用途?用于处理Results的两个级别。
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |