我有代码:
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,所以我添加了第二种情况,我也很困惑。
要定义一个带有 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)
这让我很困惑。当我不关心函数的返回值时,应该如何定义它?