ruwuma/crates/ruma-identifiers-validation/src/room_id_or_alias_id.rs
Jonas Platte 984cbda962
identifiers: Don't require room IDs to contain a server name
Room IDs being splittable into localpart and servername does not have
much inherent value and there are proposals like MSC4051¹ that propose
changing the format. Relaxing the rules makes Ruma forwards-compatible
with those proposals. The server_name accessor is kept because it is
used by at least one downstream, but is updated to return an `Option`.

¹ https://github.com/matrix-org/matrix-spec-proposals/pull/4051
2023-09-28 16:43:16 +02:00

10 lines
262 B
Rust

use crate::Error;
pub fn validate(s: &str) -> Result<(), Error> {
match s.as_bytes().first() {
Some(b'#') => crate::room_alias_id::validate(s),
Some(b'!') => crate::room_id::validate(s),
_ => Err(Error::MissingLeadingSigil),
}
}