identifiers: Make server_name! macro return a reference instead of an owned value

It is easy to turn it into an owned value through `.to_owned()`.
The reverse was not possible without tying the reference to the lifetime
of a temporary variable.
This commit is contained in:
Jonas Platte 2021-11-26 00:34:21 +01:00
parent a81769c3fd
commit 87051c3cb6
No known key found for this signature in database
GPG Key ID: 7D261D771D915378
11 changed files with 25 additions and 27 deletions

View File

@ -82,7 +82,7 @@ mod tests {
let req = super::Request { let req = super::Request {
limit: Some(uint!(10)), limit: Some(uint!(10)),
since: Some("hello"), since: Some("hello"),
server: Some(&server_name!("test.tld")), server: Some(server_name!("test.tld")),
} }
.try_into_http_request::<Vec<u8>>( .try_into_http_request::<Vec<u8>>(
"https://homeserver.tld", "https://homeserver.tld",

View File

@ -47,8 +47,8 @@ mod tests {
fn serialization() { fn serialization() {
let mut content = DirectEventContent(BTreeMap::new()); let mut content = DirectEventContent(BTreeMap::new());
let server_name = server_name!("ruma.io"); let server_name = server_name!("ruma.io");
let alice = UserId::new(&server_name); let alice = UserId::new(server_name);
let room = vec![RoomId::new(&server_name)]; let room = vec![RoomId::new(server_name)];
content.insert(alice.clone(), room.clone()); content.insert(alice.clone(), room.clone());
@ -66,8 +66,8 @@ mod tests {
#[test] #[test]
fn deserialization() { fn deserialization() {
let server_name = server_name!("ruma.io"); let server_name = server_name!("ruma.io");
let alice = UserId::new(&server_name); let alice = UserId::new(server_name);
let rooms = vec![RoomId::new(&server_name), RoomId::new(&server_name)]; let rooms = vec![RoomId::new(server_name), RoomId::new(server_name)];
let json_data = json!({ let json_data = json!({
"content": { "content": {

View File

@ -494,7 +494,7 @@ mod tests {
&& third_party_displayname == "alice" && third_party_displayname == "alice"
&& mxid == "@alice:example.org" && mxid == "@alice:example.org"
&& signatures == btreemap! { && signatures == btreemap! {
server_name!("magic.forest") => btreemap! { server_name!("magic.forest").to_owned() => btreemap! {
server_signing_key_id!("ed25519:3").to_owned() => "foobar".to_owned() server_signing_key_id!("ed25519:3").to_owned() => "foobar".to_owned()
} }
} }
@ -579,7 +579,7 @@ mod tests {
&& third_party_displayname == "alice" && third_party_displayname == "alice"
&& mxid == "@alice:example.org" && mxid == "@alice:example.org"
&& signatures == btreemap! { && signatures == btreemap! {
server_name!("magic.forest") => btreemap! { server_name!("magic.forest").to_owned() => btreemap! {
server_signing_key_id!("ed25519:3").to_owned() => "foobar".to_owned() server_signing_key_id!("ed25519:3").to_owned() => "foobar".to_owned()
} }
} }
@ -653,7 +653,7 @@ mod tests {
&& third_party_displayname == "alice" && third_party_displayname == "alice"
&& mxid == "@alice:example.org" && mxid == "@alice:example.org"
&& signatures == btreemap! { && signatures == btreemap! {
server_name!("magic.forest") => btreemap! { server_name!("magic.forest").to_owned() => btreemap! {
server_signing_key_id!("ed25519:3").to_owned() => "foobar".to_owned() server_signing_key_id!("ed25519:3").to_owned() => "foobar".to_owned()
} }
} }

View File

@ -38,16 +38,16 @@ mod tests {
RoomPinnedEventsEventContent { pinned: Vec::new() }; RoomPinnedEventsEventContent { pinned: Vec::new() };
let server_name = server_name!("example.com"); let server_name = server_name!("example.com");
content.pinned.push(EventId::new(&server_name)); content.pinned.push(EventId::new(server_name));
content.pinned.push(EventId::new(&server_name)); content.pinned.push(EventId::new(server_name));
let event = StateEvent { let event = StateEvent {
content: content.clone(), content: content.clone(),
event_id: EventId::new(&server_name), event_id: EventId::new(server_name),
origin_server_ts: MilliSecondsSinceUnixEpoch(1_432_804_485_886_u64.try_into().unwrap()), origin_server_ts: MilliSecondsSinceUnixEpoch(1_432_804_485_886_u64.try_into().unwrap()),
prev_content: None, prev_content: None,
room_id: RoomId::new(&server_name), room_id: RoomId::new(server_name),
sender: UserId::new(&server_name), sender: UserId::new(server_name),
state_key: "".into(), state_key: "".into(),
unsigned: Unsigned::default(), unsigned: Unsigned::default(),
}; };

View File

@ -57,7 +57,7 @@ mod tests {
#[test] #[test]
fn space_child_serialization() { fn space_child_serialization() {
let content = SpaceChildEventContent { let content = SpaceChildEventContent {
via: Some(vec![server_name!("example.com")]), via: Some(vec![server_name!("example.com").to_owned()]),
order: Some("uwu".to_owned()), order: Some("uwu".to_owned()),
suggested: Some(false), suggested: Some(false),
}; };

View File

@ -45,7 +45,7 @@ mod tests {
#[test] #[test]
fn space_parent_serialization() { fn space_parent_serialization() {
let content = SpaceParentEventContent { let content = SpaceParentEventContent {
via: Some(vec![server_name!("example.com")]), via: Some(vec![server_name!("example.com").to_owned()]),
canonical: true, canonical: true,
}; };

View File

@ -21,7 +21,7 @@ fn serialize_pdu_as_v1() {
server_signing_key_id!("ed25519:key_version").to_owned(), server_signing_key_id!("ed25519:key_version").to_owned(),
"86BytesOfSignatureOfTheRedactedEvent".into(), "86BytesOfSignatureOfTheRedactedEvent".into(),
); );
signatures.insert(server_name!("example.com"), inner_signature); signatures.insert(server_name!("example.com").to_owned(), inner_signature);
let mut unsigned = BTreeMap::new(); let mut unsigned = BTreeMap::new();
unsigned.insert("somekey".into(), to_raw_json_value(&json!({ "a": 456 })).unwrap()); unsigned.insert("somekey".into(), to_raw_json_value(&json!({ "a": 456 })).unwrap());
@ -88,7 +88,7 @@ fn serialize_pdu_as_v3() {
server_signing_key_id!("ed25519:key_version").to_owned(), server_signing_key_id!("ed25519:key_version").to_owned(),
"86BytesOfSignatureOfTheRedactedEvent".into(), "86BytesOfSignatureOfTheRedactedEvent".into(),
); );
signatures.insert(server_name!("example.com"), inner_signature); signatures.insert(server_name!("example.com").to_owned(), inner_signature);
let mut unsigned = BTreeMap::new(); let mut unsigned = BTreeMap::new();
unsigned.insert("somekey".into(), to_raw_json_value(&json!({ "a": 456 })).unwrap()); unsigned.insert("somekey".into(), to_raw_json_value(&json!({ "a": 456 })).unwrap());

View File

@ -103,9 +103,7 @@ pub fn server_name(input: TokenStream) -> TokenStream {
assert!(server_name::validate(&id.value()).is_ok(), "Invalid server_name"); assert!(server_name::validate(&id.value()).is_ok(), "Invalid server_name");
let output = quote! { let output = quote! {
<::std::boxed::Box::<#dollar_crate::ServerName> as ::std::convert::TryFrom<&str>>::try_from( <&#dollar_crate::ServerName as ::std::convert::TryFrom<&str>>::try_from(#id).unwrap()
#id,
).unwrap()
}; };
output.into() output.into()

View File

@ -114,7 +114,7 @@ mod tests {
fn generate_random_valid_event_id() { fn generate_random_valid_event_id() {
use crate::server_name; use crate::server_name;
let event_id = EventId::new(&server_name!("example.com")); let event_id = EventId::new(server_name!("example.com"));
let id_str = event_id.as_str(); let id_str = event_id.as_str();
assert!(id_str.starts_with('$')); assert!(id_str.starts_with('$'));

View File

@ -104,7 +104,7 @@ mod tests {
fn generate_random_valid_room_id() { fn generate_random_valid_room_id() {
use crate::server_name; use crate::server_name;
let room_id = RoomId::new(&server_name!("example.com")); let room_id = RoomId::new(server_name!("example.com"));
let id_str = room_id.as_str(); let id_str = room_id.as_str();
assert!(id_str.starts_with('!')); assert!(id_str.starts_with('!'));

View File

@ -113,7 +113,7 @@ mod tests {
#[test] #[test]
fn parse_valid_user_id() { fn parse_valid_user_id() {
let server_name = server_name!("example.com"); let server_name = server_name!("example.com");
let user_id = UserId::parse_with_server_name("@carl:example.com", &server_name) let user_id = UserId::parse_with_server_name("@carl:example.com", server_name)
.expect("Failed to create UserId."); .expect("Failed to create UserId.");
assert_eq!(user_id.as_str(), "@carl:example.com"); assert_eq!(user_id.as_str(), "@carl:example.com");
assert_eq!(user_id.localpart(), "carl"); assert_eq!(user_id.localpart(), "carl");
@ -125,7 +125,7 @@ mod tests {
fn parse_valid_user_id_parts() { fn parse_valid_user_id_parts() {
let server_name = server_name!("example.com"); let server_name = server_name!("example.com");
let user_id = let user_id =
UserId::parse_with_server_name("carl", &server_name).expect("Failed to create UserId."); UserId::parse_with_server_name("carl", server_name).expect("Failed to create UserId.");
assert_eq!(user_id.as_str(), "@carl:example.com"); assert_eq!(user_id.as_str(), "@carl:example.com");
assert_eq!(user_id.localpart(), "carl"); assert_eq!(user_id.localpart(), "carl");
assert_eq!(user_id.server_name(), "example.com"); assert_eq!(user_id.server_name(), "example.com");
@ -145,7 +145,7 @@ mod tests {
#[test] #[test]
fn parse_valid_historical_user_id() { fn parse_valid_historical_user_id() {
let server_name = server_name!("example.com"); let server_name = server_name!("example.com");
let user_id = UserId::parse_with_server_name("@a%b[irc]:example.com", &server_name) let user_id = UserId::parse_with_server_name("@a%b[irc]:example.com", server_name)
.expect("Failed to create UserId."); .expect("Failed to create UserId.");
assert_eq!(user_id.as_str(), "@a%b[irc]:example.com"); assert_eq!(user_id.as_str(), "@a%b[irc]:example.com");
assert_eq!(user_id.localpart(), "a%b[irc]"); assert_eq!(user_id.localpart(), "a%b[irc]");
@ -156,7 +156,7 @@ mod tests {
#[test] #[test]
fn parse_valid_historical_user_id_parts() { fn parse_valid_historical_user_id_parts() {
let server_name = server_name!("example.com"); let server_name = server_name!("example.com");
let user_id = UserId::parse_with_server_name("a%b[irc]", &server_name) let user_id = UserId::parse_with_server_name("a%b[irc]", server_name)
.expect("Failed to create UserId."); .expect("Failed to create UserId.");
assert_eq!(user_id.as_str(), "@a%b[irc]:example.com"); assert_eq!(user_id.as_str(), "@a%b[irc]:example.com");
assert_eq!(user_id.localpart(), "a%b[irc]"); assert_eq!(user_id.localpart(), "a%b[irc]");
@ -175,7 +175,7 @@ mod tests {
#[test] #[test]
fn generate_random_valid_user_id() { fn generate_random_valid_user_id() {
let server_name = server_name!("example.com"); let server_name = server_name!("example.com");
let user_id = UserId::new(&server_name); let user_id = UserId::new(server_name);
assert_eq!(user_id.localpart().len(), 12); assert_eq!(user_id.localpart().len(), 12);
assert_eq!(user_id.server_name(), "example.com"); assert_eq!(user_id.server_name(), "example.com");