Asynchronous 在使用rust websocket时,如何处理错误,以便只有该连接失败,而不是整个程序失败?

Asynchronous 在使用rust websocket时,如何处理错误,以便只有该连接失败,而不是整个程序失败?,asynchronous,error-handling,websocket,rust,Asynchronous,Error Handling,Websocket,Rust,我正在尝试让一个生锈的WebSocket服务器启动并运行。我从第一个开始 每次我收到一个Io错误,比如当连接中断时,整个程序都会毫无错误地结束。我将示例第26行的代码修改为: .map_err(|InvalidConnection {error, ..}| { println!("Error:{:?}",error); return error; }) 这会打印错误,但不会阻止程序仅停止单个连接而不会自行崩溃 我遇到的最常见错误是: Io(错误{repr:Custom(自定义{

我正在尝试让一个生锈的WebSocket服务器启动并运行。我从第一个开始

每次我收到一个
Io
错误,比如当连接中断时,整个程序都会毫无错误地结束。我将示例第26行的代码修改为:

.map_err(|InvalidConnection {error, ..}| {
    println!("Error:{:?}",error);
    return error;
})
这会打印错误,但不会阻止程序仅停止单个连接而不会自行崩溃

我遇到的最常见错误是:

Io(错误{repr:Custom(自定义{kind:Other,错误:Stream(错误{repr:Custom(自定义{kind:ConnectionAborted,错误:StringError(“观察到意外的EOF”)}})})

好的,在rust IRC频道的帮助下,我找到了解决方案。我刚刚将错误替换为“无”,并将其过滤掉

.map(Some).or_else(|_| -> Result<_, ()> { Ok(None) }).filter_map(|x| x) 
.map(部分).或| | |->结果{Ok(无)}).筛选| map(| x | x)

也许这些信息会帮助有类似问题的人。

好的,在rust IRC频道的帮助下,我找到了解决方案。我刚刚将错误替换为“无”,并将其过滤掉

.map(Some).or_else(|_| -> Result<_, ()> { Ok(None) }).filter_map(|x| x) 
.map(部分).或| | |->结果{Ok(无)}).筛选| map(| x | x)

也许这些信息会对有类似问题的人有所帮助。

但你的问题是什么?如何处理Io错误,使我的程序不会死掉并删除所有其他连接…@Hahihula请编辑你的问题,明确提问。没有突出显示和清晰询问的问题在Stackoverflow中是不好的。但是你的问题是什么?如何处理Io错误,使我的程序不会死掉并删除所有其他连接…@Hahihula请编辑你的问题以清楚地问出它。没有突出显示和明确询问的问题在课堂上是不好的。