Error handling Rust是否有钩子用于错误的早期返回?

Error handling Rust是否有钩子用于错误的早期返回?,error-handling,rust,hook,Error Handling,Rust,Hook,惊慌失措。使用?运算符是否可以比较早期退货?我有一个功能,需要在退出前以特殊方式关闭一些资源。我可以编写一个函数ok\u或结果{ //打开一些东西。 //现在是一组可能会引起错误的函数。 ok_或_close(foo(),局部变量)?; ok_或_close(bar(),局部变量)?; ok_或_close(baz(),局部变量)?; 确定或关闭(确定(()),局部变量) } 但这似乎很冗长。我真正想做的是: fn opens_resources() -> Result<(), M

惊慌失措。使用
运算符是否可以比较早期退货?我有一个功能,需要在退出前以特殊方式关闭一些资源。我可以编写一个函数
ok\u或
,在返回错误之前关闭资源:

fn opens_resources() -> Result<(), MyError> {
    //Opens some stuff.

    //Now a bunch of functions that might raise errors.
    ok_or_close(foo(), local variables)?;
    ok_or_close(bar(), local variables)?;
    ok_or_close(baz(), local variables)?;

    ok_or_close(Ok(()), local variables)
}
fn打开\u resources()->结果{
//打开一些东西。
//现在是一组可能会引起错误的函数。
ok_或_close(foo(),局部变量)?;
ok_或_close(bar(),局部变量)?;
ok_或_close(baz(),局部变量)?;
确定或关闭(确定(()),局部变量)
}
但这似乎很冗长。我真正想做的是:

fn opens_resources() -> Result<(), MyError> {
    //Opens some stuff.

    //Now a bunch of functions that might raise errors.
    foo()?;
    bar()?;
    baz()?;

on_err:
    //Closes some stuff. Would prefer not to make
    //  this a function, uses many local variables.
    Ok(())
}
fn打开\u resources()->结果{
//打开一些东西。
//现在是一组可能会引起错误的函数。
foo()?;
bar()?;
baz()?;
关于错误:
//关闭一些东西。不希望
//这是一个函数,使用许多局部变量。
好(())
}

有没有一种方法可以做到这一点,或者有一种编程模式可以绕过这一点?

最接近这一点的是
Try
特性,它允许您实现如何操作?影响特定类型,但遗憾的是,这仍然是一个夜间实验


如果您对这些功能感兴趣,我建议您在这方面给+1分

最接近这一点的是
Try
特性,它允许您如何实现?影响特定类型,但遗憾的是,这仍然是一个夜间实验


如果你对这个特性感兴趣,我建议你在这个

上给一个+1,通常的方法是“打开一些东西”创建一个RAII包装器。如果您详细说明这种方法有哪些问题,也许会有所帮助?通常的方法是“打开一些东西”创建RAII包装器。如果你能更详细地阐述一下这种方法有哪些问题,也许会有所帮助?