From f0d32dc42b317f8216eff07599e8fe697a77a2c4 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sun, 1 May 2022 20:31:33 -0700 Subject: [PATCH 1/2] Add test of autotrait impls --- tests/test_autotrait.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 tests/test_autotrait.rs diff --git a/tests/test_autotrait.rs b/tests/test_autotrait.rs new file mode 100644 index 00000000..af8534bd --- /dev/null +++ b/tests/test_autotrait.rs @@ -0,0 +1,12 @@ +fn assert_send_sync() {} + +#[test] +fn test() { + assert_send_sync::(); + assert_send_sync::(); + assert_send_sync::(); + assert_send_sync::(); + assert_send_sync::(); + assert_send_sync::(); + assert_send_sync::(); +} From 0768c69c89c4d74dddbf102109b124add09c6170 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sun, 1 May 2022 20:32:08 -0700 Subject: [PATCH 2/2] Impl Send + Sync for Identifier --- src/identifier.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/identifier.rs b/src/identifier.rs index 820f5d47..170a4e05 100644 --- a/src/identifier.rs +++ b/src/identifier.rs @@ -249,6 +249,9 @@ impl PartialEq for Identifier { } } +unsafe impl Send for Identifier {} +unsafe impl Sync for Identifier {} + // We use heap pointers that are 2-byte aligned, meaning they have an // insignificant 0 in the least significant bit. We take advantage of that // unneeded bit to rotate a 1 into the most significant bit to make the repr