двойного move?
#[actix_rt::main]
pub async fn run_server(relay_url: &str, session_id: &str, port: u16) -> io::Result<()> {
env_logger::init(); // Initialize the logger
let bind_addr = ("0.0.0.0", port);
info!("Starting local server on {}:{}", bind_addr.0, bind_addr.1);
info!("Relay URL: {}", relay_url);
Server::build()
.bind("tunnel", bind_addr, move || {
fn_service(move |stream: TcpStream| {
handle_stream(stream, relay_url, session_id)
})
.map_err(|err| eprintln!("Service Error: {:?}", err))
})?
.run()
.await
}
я пробовал накидывать copy на разных уровнях, даже Arc запилил, но кажется что должен быть простой и логичный способ это сделать. Строка, если что, не меняется внутри handle_stream.
Ошибка классическая - relay_url escapes the function body here
Можешь ошибку скинуть полностью?
разобрался - сам перемудрил как обычно. Вкратце - сам подход неверный, не надо делать tcp server на actix (хотя это можно сделать), гораздо проще tokio tcp listener взять и дальше все что нужно прикрутить
Обсуждают сегодня