Closed
Description
These type are very hard to read~
😪😪
`std::sync::MutexGuard<'_, std::boxed::Box<std::collections::HashMap<u32, std::sync::Arc<std::boxed::Box<futures::stream::SplitSink<tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>>>>>>>` cannot be sent between threads safely
`std::sync::MutexGuard<'_, std::boxed::Box<std::collections::HashMap<u32, std::sync::Arc<std::boxed::Box<futures::stream::SplitSink<tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>>>>>>>` cannot be sent between threads safely
help: the trait `std::marker::Send` is not implemented for `std::sync::MutexGuard<'_, std::boxed::Box<std::collections::HashMap<u32, std::sync::Arc<std::boxed::Box<futures::stream::SplitSink<tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>>>>>>>`
note: required because of the requirements on the impl of `std::marker::Send` for `&mut std::sync::MutexGuard<'_, std::boxed::Box<std::collections::HashMap<u32, std::sync::Arc<std::boxed::Box<futures::stream::SplitSink<tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>>>>>>>`
note: required because it appears within the type `[closure@src/main.rs:115:31: 142:22 p:&mut std::sync::MutexGuard<'_, std::boxed::Box<std::collections::HashMap<u32, std::sync::Arc<std::boxed::Box<futures::stream::SplitSink<tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>>>>>>>]`
note: required because it appears within the type `futures::future::chain::Chain<std::boxed::Box<dyn futures::Future<Error = websocket::WebSocketError, Item = (tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>, hyper::header::Headers)> + std::marker::Send>, futures::AndThen<futures::stream::Forward<futures::stream::FilterMap<futures::stream::TakeWhile<futures::stream::SplitStream<tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>>, [closure@src/main.rs:122:41: 122:62], std::result::Result<bool, websocket::WebSocketError>>, [closure@src/main.rs:123:41: 130:30]>, std::boxed::Box<futures::stream::SplitSink<tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>>>>, futures::sink::Send<std::boxed::Box<futures::stream::SplitSink<tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>>>>, [closure@src/main.rs:141:39: 141:87]>, [closure@src/main.rs:115:31: 142:22 p:&mut std::sync::MutexGuard<'_, std::boxed::Box<std::collections::HashMap<u32, std::sync::Arc<std::boxed::Box<futures::stream::SplitSink<tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>>>>>>>]>`
note: required because it appears within the type `futures::AndThen<std::boxed::Box<dyn futures::Future<Error = websocket::WebSocketError, Item = (tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>, hyper::header::Headers)> + std::marker::Send>, futures::AndThen<futures::stream::Forward<futures::stream::FilterMap<futures::stream::TakeWhile<futures::stream::SplitStream<tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>>, [closure@src/main.rs:122:41: 122:62], std::result::Result<bool, websocket::WebSocketError>>, [closure@src/main.rs:123:41: 130:30]>, std::boxed::Box<futures::stream::SplitSink<tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>>>>, futures::sink::Send<std::boxed::Box<futures::stream::SplitSink<tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>>>>, [closure@src/main.rs:141:39: 141:87]>, [closure@src/main.rs:115:31: 142:22 p:&mut std::sync::MutexGuard<'_, std::boxed::Box<std::collections::HashMap<u32, std::sync::Arc<std::boxed::Box<futures::stream::SplitSink<tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>>>>>>>]>`
note: required because it appears within the type `futures::MapErr<futures::AndThen<std::boxed::Box<dyn futures::Future<Error = websocket::WebSocketError, Item = (tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>, hyper::header::Headers)> + std::marker::Send>, futures::AndThen<futures::stream::Forward<futures::stream::FilterMap<futures::stream::TakeWhile<futures::stream::SplitStream<tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>>, [closure@src/main.rs:122:41: 122:62], std::result::Result<bool, websocket::WebSocketError>>, [closure@src/main.rs:123:41: 130:30]>, std::boxed::Box<futures::stream::SplitSink<tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>>>>, futures::sink::Send<std::boxed::Box<futures::stream::SplitSink<tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>>>>, [closure@src/main.rs:141:39: 141:87]>, [closure@src/main.rs:115:31: 142:22 p:&mut std::sync::MutexGuard<'_, std::boxed::Box<std::collections::HashMap<u32, std::sync::Arc<std::boxed::Box<futures::stream::SplitSink<tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>>>>>>>]>, [closure@src/main.rs:145:31: 145:57]>`
note: required because it appears within the type `futures::Map<futures::MapErr<futures::AndThen<std::boxed::Box<dyn futures::Future<Error = websocket::WebSocketError, Item = (tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>, hyper::header::Headers)> + std::marker::Send>, futures::AndThen<futures::stream::Forward<futures::stream::FilterMap<futures::stream::TakeWhile<futures::stream::SplitStream<tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>>, [closure@src/main.rs:122:41: 122:62], std::result::Result<bool, websocket::WebSocketError>>, [closure@src/main.rs:123:41: 130:30]>, std::boxed::Box<futures::stream::SplitSink<tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>>>>, futures::sink::Send<std::boxed::Box<futures::stream::SplitSink<tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>>>>, [closure@src/main.rs:141:39: 141:87]>, [closure@src/main.rs:115:31: 142:22 p:&mut std::sync::MutexGuard<'_, std::boxed::Box<std::collections::HashMap<u32, std::sync::Arc<std::boxed::Box<futures::stream::SplitSink<tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>>>>>>>]>, [closure@src/main.rs:145:31: 145:57]>, [closure@src/main.rs:146:30: 146:63]>`rustc(E0277)
main.rs(144, 26): `std::sync::MutexGuard<'_, std::boxed::Box<std::collections::HashMap<u32, std::sync::Arc<std::boxed::Box<futures::stream::SplitSink<tokio::codec::Framed<tokio::net::TcpStream, websocket::async::MessageCodec<websocket::OwnedMessage>>>>>>>>` cannot be sent between threads safely