mod common;
use axum_error_sets::{
StatusResultExt,
code::{InternalServerError, NotFound},
};
use common::{AppResultSet, StringError};
fn app_error() -> Result<String, StringError> {
Err(StringError::new("record missing"))
}
fn generic_error() -> Result<(), std::io::Error> {
Err(std::io::Error::new(
std::io::ErrorKind::Other,
"generic error",
))
}
fn get_user() -> AppResultSet<String, (NotFound,)> {
let user = app_error().into_not_found()?;
Ok(user)
}
fn process_user() -> AppResultSet<String, (NotFound, InternalServerError)> {
let user = app_error().into_not_found()?;
if user.is_empty() {
return Err(StringError::new("payload corrupt")).into_internal()?;
}
generic_error().into_internal()?;
Ok(user)
}
fn main() {
println!("get_user: {:?}", get_user());
println!("process_user: {:?}", process_user());
}