gpt4 book ai didi

rust - 如何解决 TcpStream 的 "moved value"问题?

转载 作者:行者123 更新时间:2023-11-29 08:25:51 25 4
gpt4 key购买 nike

我正在尝试将数据包/字节从 TcpStream 传输到另一个,反之亦然。我创建了一个结构 Connection:

pub struct Connection {
pub client_socket: TcpStream,
pub server_socket: TcpStream
}

我正在尝试打开两个线程,以便可以双向传输所有字节。可悲的是,我正在尝试使用移动的值,因为我第二次调用了连接。我该如何解决?

thread::spawn(move || loop { connection.transfer_server_client_packet(); });
thread::spawn(move || loop { connection.transfer_client_server_packet(); });
impl Connection {
fn get_packet(&mut self, from_client: bool) -> Result<Packet, io::Error> {
unimplemented!()
}
pub fn get_client_packet(&mut self) -> Result<Packet, io::Error> {
self.get_packet(true)
}
pub fn get_server_packet(&mut self) -> Result<Packet, io::Error> {
self.get_packet(false)
}
fn send_packet(&mut self, from_client: bool, mut packet: Packet) -> Result<Packet, io::Error> {
unimplemented!()
}
pub fn send_client_packet(&mut self, packet: Packet) -> Result<Packet, io::Error> {
self.send_packet(true, packet)
}
pub fn send_server_packet(&mut self, packet: Packet) -> Result<Packet, io::Error> {
self.send_packet(false, packet)
}
fn transfer_packet(&mut self, from_client: bool, to_client: bool) -> Result<usize, io::Error> {
let packet = if from_client {
self.get_client_packet()?
} else {
self.get_server_packet()?
};
if to_client {
self.send_client_packet(packet)?
} else {
self.send_server_packet(packet)?
};
Ok(0)
}
pub fn transfer_client_server_packet(&mut self) -> Result<usize, io::Error> {
self.transfer_packet(true, false)
}
pub fn transfer_server_client_packet(&mut self) -> Result<usize, io::Error> {
self.transfer_packet(false, true)
}
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com