use std::ops::Deref; use actix_web::{get, web, Responder, Result}; use bank::account::AccountError; use http_lib::json_account::JsonAccount; use crate::handlers::error::HttpAccountError; use crate::AppState; #[get("/{nr}")] pub async fn route(info: web::Path, data: web::Data) -> Result { let nr = info.into_inner(); info!("getting account {}...", nr); let bank = data.bank.read().unwrap(); match bank.accounts.get(&nr) { None => Err(HttpAccountError(AccountError::NotFound).into()), Some(account) => { let account = account.read().unwrap(); let account: JsonAccount = account.deref().into(); Ok(web::Json(account)) } } }