Rust 如何从一个函数返回多个类型?

Rust 如何从一个函数返回多个类型?,rust,actix-web,rust-actix,Rust,Actix Web,Rust Actix,我正在使用我的处理器,我偶然发现了一个问题 我想返回一个web::Json,根据参数返回2种类型中的1种 我有这样的东西,它不能编译,因为impl只能是一种类型 #[派生(反序列化)] 发布结构TerraformFieldParams{ 字段:字符串, } #[导出(序列化)] 结构TerraformFieldResponse{ 字段名:字符串, fieldId:String, 数据类型:String, 状态:字符串, } #[导出(序列化)] 结构TerraformFieldErrorResp

我正在使用我的处理器,我偶然发现了一个问题

我想返回一个
web::Json
,根据参数返回2种类型中的1种

我有这样的东西,它不能编译,因为
impl
只能是一种类型

#[派生(反序列化)]
发布结构TerraformFieldParams{
字段:字符串,
}
#[导出(序列化)]
结构TerraformFieldResponse{
字段名:字符串,
fieldId:String,
数据类型:String,
状态:字符串,
}
#[导出(序列化)]
结构TerraformFieldErrorResponse{
错误:字符串,
}
发布异步fn处理程序(参数:web::Path)->impl actix\u web::Responder{
匹配和参数字段[…]{
“000000000 6549B31”=>web::Json(TerraformFieldResponse{
fieldName:String::from(“主机”),
fieldId:String::from(“000000123”),
数据类型:String::from(“String”),
状态:String::from(“已启用”),
}),
_=>web::Json(TerraformFieldErrorResponse{
err:String::from(“错误123”),
}),
}
}

我该怎么做呢?

一个
enum
不起作用?看起来你在试图返回一个错误,为什么不使用
Result
()?正如@rethab提到的,
Result
是返回响应或错误的惯用解决方案。在您的案例中:
->Result
Actix web正好为这个用例提供了响应程序。因此,我首先使用了Actix error,但后来我注意到我可以使用
HttpResponse::build(StatusCode::).json()
,在我的案例中更简单。不管怎么说,我不能发布,因为有人关闭了这个问题:(