Skip to content

These types are very hard to read #66269

Closed
@ofzo

Description

@ofzo

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-diagnosticsArea: Messages for errors, warnings, and lintsC-enhancementCategory: An issue proposing an enhancement or a PR with one.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions