From 07040a18c8a14115674943436db9c8990c8f9e0a Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Sat, 30 May 2020 20:04:19 +0200 Subject: [PATCH] Fixup for 7b30c2b (forgot RoomVersionId) --- src/room_version_id.rs | 54 +++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 29 deletions(-) diff --git a/src/room_version_id.rs b/src/room_version_id.rs index efd59979..b5d1f58a 100644 --- a/src/room_version_id.rs +++ b/src/room_version_id.rs @@ -1,7 +1,6 @@ //! Matrix room version identifiers. use std::{ - borrow::Cow, convert::TryFrom, fmt::{self, Display, Formatter}, }; @@ -187,47 +186,44 @@ impl<'de> Deserialize<'de> for RoomVersionId { } } -impl TryFrom> for RoomVersionId { - type Error = Error; - - /// Attempts to create a new Matrix room version ID from a string representation. - fn try_from(room_version_id: Cow<'_, str>) -> Result { - let version = match &room_version_id as &str { - "1" => Self(InnerRoomVersionId::Version1), - "2" => Self(InnerRoomVersionId::Version2), - "3" => Self(InnerRoomVersionId::Version3), - "4" => Self(InnerRoomVersionId::Version4), - "5" => Self(InnerRoomVersionId::Version5), - custom => { - if custom.is_empty() { - return Err(Error::MinimumLengthNotSatisfied); - } else if custom.chars().count() > MAX_CODE_POINTS { - return Err(Error::MaximumLengthExceeded); - } else { - Self(InnerRoomVersionId::Custom( - room_version_id.into_owned().into(), - )) - } +/// Attempts to create a new Matrix room version ID from a string representation. +fn try_from(room_version_id: S) -> Result +where + S: AsRef + Into>, +{ + let version = match room_version_id.as_ref() { + "1" => RoomVersionId(InnerRoomVersionId::Version1), + "2" => RoomVersionId(InnerRoomVersionId::Version2), + "3" => RoomVersionId(InnerRoomVersionId::Version3), + "4" => RoomVersionId(InnerRoomVersionId::Version4), + "5" => RoomVersionId(InnerRoomVersionId::Version5), + custom => { + if custom.is_empty() { + return Err(Error::MinimumLengthNotSatisfied); + } else if custom.chars().count() > MAX_CODE_POINTS { + return Err(Error::MaximumLengthExceeded); + } else { + RoomVersionId(InnerRoomVersionId::Custom(room_version_id.into())) } - }; + } + }; - Ok(version) - } + Ok(version) } impl TryFrom<&str> for RoomVersionId { type Error = crate::error::Error; - fn try_from(s: &str) -> Result { - Self::try_from(Cow::Borrowed(s)) + fn try_from(s: &str) -> Result { + try_from(s) } } impl TryFrom for RoomVersionId { type Error = crate::error::Error; - fn try_from(s: String) -> Result { - Self::try_from(Cow::Owned(s)) + fn try_from(s: String) -> Result { + try_from(s) } }