小编Gal*_*axy的帖子

将 Option 实例从 Some 设置为 None 是否会触发删除内部值?

我有代码:

struct Foo {}

impl Default for Foo {
    fn default() -> Self {
        Self {}
    }
}

impl Drop for Foo {
    fn drop(&mut self) {
        // Do something
    }
}

fn main() {
    {
        let foo = Some(Foo::default());
        let foo = None; // Would this line trigger `Foo::drop`?
    };
    {
        let mut foo = Some(Foo::default());
        foo = None; // Would this line trigger `Foo::drop`?
    };
}
Run Code Online (Sandbox Code Playgroud)

s占用的资源是否得到foo正确释放?

第一种情况(变量被覆盖)不会触发drop,所以我添加了第二种情况,我也很困惑。

rust

6
推荐指数
1
解决办法
1174
查看次数

当函数没有返回成功值时如何使用 Result?

要定义一个带有 void return 的函数,我的代码如下所示:

trait Handler {
    fn on_message(&mut self, msg: String) -> Result<()> {
        println!("on_message: {}", msg);
        Ok(())
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器告诉我这是错误的,因为 aResult应该始终有 2 个参数:

trait Handler {
    fn on_message(&mut self, msg: String) -> Result<()> {
        println!("on_message: {}", msg);
        Ok(())
    }
}
Run Code Online (Sandbox Code Playgroud)

这让我很困惑。当我不关心函数的返回值时,应该如何定义它?

error-handling rust

5
推荐指数
1
解决办法
1962
查看次数

标签 统计

rust ×2

error-handling ×1