diff --git a/crates/ruma-identifiers/src/event_id.rs b/crates/ruma-identifiers/src/event_id.rs index 64471bec..91e22a57 100644 --- a/crates/ruma-identifiers/src/event_id.rs +++ b/crates/ruma-identifiers/src/event_id.rs @@ -1,7 +1,5 @@ //! Matrix event identifiers. -use std::convert::TryInto; - use crate::ServerName; /// A Matrix event ID. @@ -68,7 +66,7 @@ impl EventId { /// /// Only applicable to events in the original format as used by Matrix room versions 1 and 2. pub fn server_name(&self) -> Option<&ServerName> { - self.colon_idx().map(|idx| self.as_str()[idx as usize + 1..].try_into().unwrap()) + self.colon_idx().map(|idx| ServerName::from_borrowed(&self.as_str()[idx + 1..])) } fn colon_idx(&self) -> Option { diff --git a/crates/ruma-identifiers/src/macros.rs b/crates/ruma-identifiers/src/macros.rs index 19ff2c4d..4d15af51 100644 --- a/crates/ruma-identifiers/src/macros.rs +++ b/crates/ruma-identifiers/src/macros.rs @@ -27,7 +27,7 @@ macro_rules! partial_eq_string { macro_rules! opaque_identifier_common_impls { ($id:ty) => { impl $id { - fn from_borrowed(s: &str) -> &Self { + pub(super) fn from_borrowed(s: &str) -> &Self { unsafe { std::mem::transmute(s) } } diff --git a/crates/ruma-identifiers/src/mxc_uri.rs b/crates/ruma-identifiers/src/mxc_uri.rs index 7490aca1..3c2d1d92 100644 --- a/crates/ruma-identifiers/src/mxc_uri.rs +++ b/crates/ruma-identifiers/src/mxc_uri.rs @@ -2,7 +2,7 @@ //! //! [MXC URI]: https://matrix.org/docs/spec/client_server/r0.6.1#mxc-uri -use std::{convert::TryInto, num::NonZeroU8}; +use std::num::NonZeroU8; use ruma_identifiers_validation::{error::MxcUriError, mxc_uri::validate}; @@ -36,7 +36,7 @@ impl MxcUri { pub fn parts(&self) -> Result<(&ServerName, &str)> { self.extract_slash_idx().map(|idx| { ( - self.as_str()[6..idx.get() as usize].try_into().unwrap(), + ServerName::from_borrowed(&self.as_str()[6..idx.get() as usize]), &self.as_str()[idx.get() as usize + 1..], ) }) diff --git a/crates/ruma-identifiers/src/room_alias_id.rs b/crates/ruma-identifiers/src/room_alias_id.rs index 753d2ada..f9d9477d 100644 --- a/crates/ruma-identifiers/src/room_alias_id.rs +++ b/crates/ruma-identifiers/src/room_alias_id.rs @@ -1,7 +1,5 @@ //! Matrix room alias identifiers. -use std::convert::TryInto; - use crate::{server_name::ServerName, EventId, MatrixToRef}; /// A Matrix room alias ID. @@ -31,7 +29,7 @@ impl RoomAliasId { /// Returns the server name of the room alias ID. pub fn server_name(&self) -> &ServerName { - self.as_str()[self.colon_idx() + 1..].try_into().unwrap() + ServerName::from_borrowed(&self.as_str()[self.colon_idx() + 1..]) } /// Create a `matrix.to` reference for this room alias ID. diff --git a/crates/ruma-identifiers/src/room_id.rs b/crates/ruma-identifiers/src/room_id.rs index b30eb275..427b7995 100644 --- a/crates/ruma-identifiers/src/room_id.rs +++ b/crates/ruma-identifiers/src/room_id.rs @@ -1,7 +1,5 @@ //! Matrix room identifiers. -use std::convert::TryInto; - use crate::{EventId, MatrixToRef, ServerName}; /// A Matrix room ID. @@ -40,7 +38,7 @@ impl RoomId { /// Returns the server name of the room ID. pub fn server_name(&self) -> &ServerName { - self.as_str()[self.colon_idx() + 1..].try_into().unwrap() + ServerName::from_borrowed(&self.as_str()[self.colon_idx() + 1..]) } /// Create a `matrix.to` reference for this room ID. diff --git a/crates/ruma-identifiers/src/room_or_room_alias_id.rs b/crates/ruma-identifiers/src/room_or_room_alias_id.rs index b975356a..5e977c78 100644 --- a/crates/ruma-identifiers/src/room_or_room_alias_id.rs +++ b/crates/ruma-identifiers/src/room_or_room_alias_id.rs @@ -43,7 +43,7 @@ impl RoomOrAliasId { /// Returns the server name of the room (alias) ID. pub fn server_name(&self) -> &ServerName { - self.as_str()[self.colon_idx() + 1..].try_into().unwrap() + ServerName::from_borrowed(&self.as_str()[self.colon_idx() + 1..]) } /// Whether this is a room id (starts with `'!'`) diff --git a/crates/ruma-identifiers/src/user_id.rs b/crates/ruma-identifiers/src/user_id.rs index 155d3609..c652448f 100644 --- a/crates/ruma-identifiers/src/user_id.rs +++ b/crates/ruma-identifiers/src/user_id.rs @@ -1,7 +1,5 @@ //! Matrix user identifiers. -use std::convert::TryInto; - use crate::{MatrixToRef, ServerName}; /// A Matrix user ID. @@ -60,7 +58,7 @@ impl UserId { /// Returns the server name of the user ID. pub fn server_name(&self) -> &ServerName { - self.as_str()[self.colon_idx() as usize + 1..].try_into().unwrap() + ServerName::from_borrowed(&self.as_str()[self.colon_idx() + 1..]) } /// Whether this user ID is a historical one.