identifiers: Remove runtime checks for RoomOrAliasId conversions
This commit is contained in:
parent
4132c43cbb
commit
2a2028f1a7
@ -35,7 +35,7 @@ macro_rules! opaque_identifier_common_impls {
|
|||||||
unsafe { Box::from_raw(Box::into_raw(s) as _) }
|
unsafe { Box::from_raw(Box::into_raw(s) as _) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn into_owned(self: Box<Self>) -> Box<str> {
|
pub(super) fn into_owned(self: Box<Self>) -> Box<str> {
|
||||||
unsafe { Box::from_raw(Box::into_raw(self) as _) }
|
unsafe { Box::from_raw(Box::into_raw(self) as _) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,9 +1,6 @@
|
|||||||
//! Matrix identifiers for places where a room ID or room alias ID are used interchangeably.
|
//! Matrix identifiers for places where a room ID or room alias ID are used interchangeably.
|
||||||
|
|
||||||
use std::{
|
use std::{convert::TryFrom, hint::unreachable_unchecked};
|
||||||
convert::{TryFrom, TryInto},
|
|
||||||
hint::unreachable_unchecked,
|
|
||||||
};
|
|
||||||
|
|
||||||
use crate::{server_name::ServerName, RoomAliasId, RoomId};
|
use crate::{server_name::ServerName, RoomAliasId, RoomId};
|
||||||
|
|
||||||
@ -89,13 +86,13 @@ enum Variant {
|
|||||||
|
|
||||||
impl From<Box<RoomId>> for Box<RoomOrAliasId> {
|
impl From<Box<RoomId>> for Box<RoomOrAliasId> {
|
||||||
fn from(room_id: Box<RoomId>) -> Self {
|
fn from(room_id: Box<RoomId>) -> Self {
|
||||||
Self::try_from(room_id.as_str()).unwrap()
|
RoomOrAliasId::from_owned(room_id.into_owned())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<Box<RoomAliasId>> for Box<RoomOrAliasId> {
|
impl From<Box<RoomAliasId>> for Box<RoomOrAliasId> {
|
||||||
fn from(room_alias_id: Box<RoomAliasId>) -> Self {
|
fn from(room_alias_id: Box<RoomAliasId>) -> Self {
|
||||||
Self::try_from(room_alias_id.as_str()).unwrap()
|
RoomOrAliasId::from_owned(room_alias_id.into_owned())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,8 +101,8 @@ impl TryFrom<Box<RoomOrAliasId>> for Box<RoomId> {
|
|||||||
|
|
||||||
fn try_from(id: Box<RoomOrAliasId>) -> Result<Box<RoomId>, Box<RoomAliasId>> {
|
fn try_from(id: Box<RoomOrAliasId>) -> Result<Box<RoomId>, Box<RoomAliasId>> {
|
||||||
match id.variant() {
|
match id.variant() {
|
||||||
Variant::RoomId => Ok(id.as_str().try_into().unwrap()),
|
Variant::RoomId => Ok(RoomId::from_owned(id.into_owned())),
|
||||||
Variant::RoomAliasId => Err(id.as_str().try_into().unwrap()),
|
Variant::RoomAliasId => Err(RoomAliasId::from_owned(id.into_owned())),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -115,8 +112,8 @@ impl TryFrom<Box<RoomOrAliasId>> for Box<RoomAliasId> {
|
|||||||
|
|
||||||
fn try_from(id: Box<RoomOrAliasId>) -> Result<Box<RoomAliasId>, Box<RoomId>> {
|
fn try_from(id: Box<RoomOrAliasId>) -> Result<Box<RoomAliasId>, Box<RoomId>> {
|
||||||
match id.variant() {
|
match id.variant() {
|
||||||
Variant::RoomAliasId => Ok(id.as_str().try_into().unwrap()),
|
Variant::RoomAliasId => Ok(RoomAliasId::from_owned(id.into_owned())),
|
||||||
Variant::RoomId => Err(id.as_str().try_into().unwrap()),
|
Variant::RoomId => Err(RoomId::from_owned(id.into_owned())),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user