【问题标题】:How to return a custom error struct with results?如何返回带有结果的自定义错误结构?
【发布时间】:2023-02-08 22:25:41
【问题描述】:

我正在开发一个 tauri 应用程序,我希望能够将结构返回到前端,其中包含来自 0-2 的消息和严重性。

{
  "msg": "some error message",
  "severity": 1,
}

我希望能够优雅地执行此操作,理想情况下我将能够利用 question mark operator 进行干净的错误处理,如下所示:

#[tauri::command]
fn my_command() -> MyCustomResult {
  let some_result = error_prone_function();
  convert_result(some_result, Severity::Medium)?;
}

如果可能的话,最干净的方法是什么?否则,最好的选择是什么?

【问题讨论】:

    标签: rust tauri


    【解决方案1】:

    基本上唯一的要求是你的错误必须实现serde::Serialize。 Tauri 的文档给出了一个小的介绍/示例,也许这足以给你一个想法:https://tauri.app/v1/guides/features/command#error-handling

    基于我use myself 的东西的示例可能如下所示:

    impl serde::Serialize for Error {
        fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
        where
            S: serde::ser::Serializer,
        {
            use serde::ser::SerializeStruct;
    
            let mut state = serializer.serialize_struct("Error", 2)?;
            state.serialize_field("severity", &self.severity())?;
            state.serialize_field("message", &self.to_string())?;
            state.end()
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 2022-01-01
      相关资源
      最近更新 更多