From e773b1500fe0dd94a4edd06e836f630110b06a71 Mon Sep 17 00:00:00 2001 From: Titouan Rigoudy Date: Wed, 30 Nov 2022 20:00:57 +0000 Subject: [PATCH] Introduce RoomNotFoundError. --- client/src/room/map.rs | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/client/src/room/map.rs b/client/src/room/map.rs index 11176bd..bcc7b04 100644 --- a/client/src/room/map.rs +++ b/client/src/room/map.rs @@ -10,13 +10,17 @@ use crate::room::{Membership, Room, Visibility}; /// The error returned by RoomMap functions. #[derive(Debug, Error)] pub enum RoomError { - #[error("room {0} not found")] - RoomNotFound(String), + #[error(transparent)] + RoomNotFound(#[from] RoomNotFoundError), #[error("cannot change membership from {0:?} to {1:?}")] MembershipChangeInvalid(Membership, Membership), } +#[derive(Debug, Error)] +#[error("room {0} not found")] +pub struct RoomNotFoundError(String); + /// Contains the mapping from room names to room data and provides a clean /// interface to interact with it. #[derive(Debug, Default)] @@ -39,10 +43,13 @@ impl RoomMap { /// Looks up the given room name in the map, returning an immutable /// reference to the associated data if found, or an error if not found. - pub fn get_strict(&self, room_name: &str) -> Result<&Room, RoomError> { + pub fn get_strict( + &self, + room_name: &str, + ) -> Result<&Room, RoomNotFoundError> { match self.map.get(room_name) { Some(room) => Ok(room), - None => Err(RoomError::RoomNotFound(room_name.to_string())), + None => Err(RoomNotFoundError(room_name.to_string())), } } @@ -51,10 +58,10 @@ impl RoomMap { pub fn get_mut_strict( &mut self, room_name: &str, - ) -> Result<&mut Room, RoomError> { + ) -> Result<&mut Room, RoomNotFoundError> { match self.map.get_mut(room_name) { Some(room) => Ok(room), - None => Err(RoomError::RoomNotFound(room_name.to_string())), + None => Err(RoomNotFoundError(room_name.to_string())), } }