D
RefCell: !Send + !Sync, так что футура, которую создаст генератор, тоже будет !Send и !Sync2) подумал, не нужен, но и оборачивать ни во что не надо, достаточно вроде мут ссылок, но щас проверю
Size: a a a
D
RefCell: !Send + !Sync, так что футура, которую создаст генератор, тоже будет !Send и !SyncLB
П
П
П
LB
D
&mut T и пожалуйстаLB
D
RefCell-то Send, но дальше ведь Rc понадобится :)LB
D
use futures::stream::Stream;
use tokio::net::TcpStream;
use tokio_tungstenite::WebSocketStream;
fn get_stream() -> WebSocketStream<TcpStream> {
todo!()
}
fn impls_stream<T: Stream>(_: T) {}
#[tokio::main]
async fn main() {
let mut stream = get_stream();
impls_stream(&mut stream);
}
LB
LB
D
(&mut stream).map(|x| x).next().await;D
tokio::select! {
_ = stream.send(message) => { }
_ = stream.next() => { }
}stream по мутабельной ссылке :(D
let (mut sink, mut stream) = stream.split();
tokio::select! {
_ = sink.send(get_message()) => { }
_ = stream.next() => { }
}
LB
D
let stream = RefCell::new(stream);
let send = stream.borrow_mut().send(get_message());
let receive = stream.borrow_mut().next();
Rc, и тогда прощай многопотокD
LB