tokio_tungstenite::WebSocketStream的split()方法在哪里实现的?
Where is the split() method of tokio_tungstenite::WebSocketStream implemented?
tokio_tungstenite::WebSocketStream
implement the split()
function as used in one of their examples在哪里?
以下是示例的片段:
let (ws_stream, _) = connect_async(url).await.expect("Failed to connect");
let (write, read) = ws_stream.split();
其他人 在 tokio::net::TcpStream
中发现 split()
,答案是 TcpStream
实现了 AsyncRead
。在 WebSocketStream
的情况下,我看不到任何 impl AsyncRead for WebSocketStream
代码。
我更广泛的问题是我缺少什么知识阻止我在 docs.rs 或源代码中找到 split()
等方法及其对 WebSocketStream
等结构的实现代码?
我遗漏的概念是一揽子实现,其中模块中的特征对我的模块中的代码一无所知,可以为我的结构添加功能。只要外部代码的特征范围适合我的代码,就可以。
在这种情况下 WebSocketStream
实施 Stream
。 futures crate 中有一个 trait StreamExt
,它对 WebSocketStream
一无所知,但却是 Stream
的全面实现。它向 Stream
提供 split()
的功能,并且当 WebSocketStream
实现 Stream
时,它也获得了该功能。
tokio_tungstenite::WebSocketStream
implement the split()
function as used in one of their examples在哪里?
以下是示例的片段:
let (ws_stream, _) = connect_async(url).await.expect("Failed to connect");
let (write, read) = ws_stream.split();
其他人 tokio::net::TcpStream
中发现 split()
,答案是 TcpStream
实现了 AsyncRead
。在 WebSocketStream
的情况下,我看不到任何 impl AsyncRead for WebSocketStream
代码。
我更广泛的问题是我缺少什么知识阻止我在 docs.rs 或源代码中找到 split()
等方法及其对 WebSocketStream
等结构的实现代码?
我遗漏的概念是一揽子实现,其中模块中的特征对我的模块中的代码一无所知,可以为我的结构添加功能。只要外部代码的特征范围适合我的代码,就可以。
在这种情况下 WebSocketStream
实施 Stream
。 futures crate 中有一个 trait StreamExt
,它对 WebSocketStream
一无所知,但却是 Stream
的全面实现。它向 Stream
提供 split()
的功能,并且当 WebSocketStream
实现 Stream
时,它也获得了该功能。