"this_function_returns_error“返回结果,我需要将其传播回main。run函数的签名:https://docs.rs/winit/0.25.0/winit/event_loop/struct.EventLoop.html#method.run
我需要的简单例子是:
use winit::{
event::{Event, WindowEvent},
event_loop::{ControlFlow, EventLoop},
window::WindowBuilder,
};
fn main() -> Result<(), SomeError> {
let event_loop = EventLoop::new();
let window = WindowBuilder::new().build(&event_loop).unwrap();
event_loop.run(move |event, _, control_flow| {
*control_flow = ControlFlow::Wait;
match event {
Event::WindowEvent {
event: WindowEvent::CloseRequested,
window_id,
} if window_id == window.id() => *control_flow = ControlFlow::Exit,
_ => (),
}
this_function_returns_error()?;
});
}编译器指出:
在run方法中闭包的位置:此函数应返回Result或Option以接受?
但是我不确定我是否能够返回这个闭包的结果,因为它是winit函数的参数。
发布于 2021-06-22 10:29:12
,我不确定是否能够返回这个闭包的结果,因为它是winit函数的参数。
不,不能,事件循环处理程序的类型是:
FnMut(Event<'_, T>, &EventLoopWindowTarget<T>, &mut ControlFlow)里面没有返回值。
不仅如此,还键入了事件循环运行程序:
pub fn run<F>(self, event_handler: F) -> !-> !意味着它永远不会返回。
它将退出,但我假设它直接终止了当前进程,因为它的类型注释清楚地表明,它永远不会返回对封闭的main的控制。
事实上,这正是每个实现似乎都要做的:它们运行底层事件循环,如果终止,它们只需运行::std::process::exit(0);。
https://stackoverflow.com/questions/68081717
复制相似问题