如何为 gtk 调用创建 "if-let" 块?

How do I create an "if-let" block for a gtk call?

我正在尝试创建一个使用 gtk 在桌面上显示 window 的应用程序。我试图通过使用“if-let”而不是使用“unwrap()”调用来改进代码的错误处理。现在的代码是:

sender.send(AppEvent::QUIT).unwrap();

并希望将其变成一个 if-let 块

if let Some(<need_help_here>) = sender.send(AppEvent::QUIT);

我在 部分需要帮助。 send 函数定义为

pub fn send(&self, t: T) -> Result<(), mpsc::SendError<T>> 

块应该是

if Err(e) = sender.send(AppEvent::QUIT) {
  println!("{:?}", e);
}

由于函数 returns 是 Result 而不是 Option,您需要匹配 Ok(...),而不是 Some(...):

if let Ok(_) = sender.send(AppEvent::QUIT) {
    println!("send successuful");
} else {
    println!("send failed");
}

请注意,_ 会丢弃成功“值”,因为它始终是 (),一个不包含任何信息的无效“单位”值。 Ok(()) 也可以。