Add RoomIdOrAliasId::into_either
This commit is contained in:
parent
6e6a51e11a
commit
e21633ef53
@ -13,6 +13,8 @@ Improvements:
|
||||
* `impl From<RoomAliasId> for RoomIdOrAliasId`
|
||||
* `impl TryFrom<RoomIdOrAliasId> for RoomId`
|
||||
* `impl TryFrom<RoomIdOrAliasId> for RoomAliasId`
|
||||
* `RoomIdOrAliasId::into_either` (if the optional dependency `either` is activated with the
|
||||
identically named feature)
|
||||
|
||||
# 0.15.1
|
||||
|
||||
|
@ -21,6 +21,7 @@ default = ["serde"]
|
||||
|
||||
[dependencies]
|
||||
diesel = { version = "1.4.4", optional = true }
|
||||
either = { version = "1.5.3", optional = true }
|
||||
rand = { version = "0.7.3", optional = true }
|
||||
serde = { version = "1.0.106", optional = true }
|
||||
|
||||
|
@ -55,6 +55,22 @@ impl RoomIdOrAliasId {
|
||||
self.variant() == Variant::RoomAliasId
|
||||
}
|
||||
|
||||
/// Turn this `RoomIdOrAliasId` into `Either<RoomId, RoomAliasId>`
|
||||
#[cfg(feature = "either")]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "either")))]
|
||||
pub fn into_either(self) -> either::Either<RoomId, RoomAliasId> {
|
||||
match self.variant() {
|
||||
Variant::RoomId => either::Either::Left(RoomId {
|
||||
full_id: self.full_id,
|
||||
colon_idx: self.colon_idx,
|
||||
}),
|
||||
Variant::RoomAliasId => either::Either::Right(RoomAliasId {
|
||||
full_id: self.full_id,
|
||||
colon_idx: self.colon_idx,
|
||||
}),
|
||||
}
|
||||
}
|
||||
|
||||
fn variant(&self) -> Variant {
|
||||
match self.full_id.bytes().next() {
|
||||
Some(b'!') => Variant::RoomId,
|
||||
|
Loading…
x
Reference in New Issue
Block a user