Skip to content

Commit

Permalink
Set type annottations for transmute (#291)
Browse files Browse the repository at this point in the history
This is a new lint for Clippy that causes CI to fail. For details see
https://rust-lang.github.io/rust-clippy/master/index.html#/missing_transmute_annotations
  • Loading branch information
Shatur committed Jun 16, 2024
1 parent b3f1505 commit 009163c
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 13 deletions.
4 changes: 2 additions & 2 deletions src/client/events/event_data.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,8 @@ impl ClientEventData {
receive: receive::<E>,
resend_locally: resend_locally::<E>,
reset: reset::<E>,
serialize: unsafe { mem::transmute(serialize) },
deserialize: unsafe { mem::transmute(deserialize) },
serialize: unsafe { mem::transmute::<SerializeFn<E>, unsafe fn()>(serialize) },
deserialize: unsafe { mem::transmute::<DeserializeFn<E>, unsafe fn()>(deserialize) },
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/core/replication_registry/command_fns.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ impl UntypedCommandFns {
type_id: TypeId::of::<C>(),
type_name: any::type_name::<C>(),
// SAFETY: the function won't be called until the type is restored.
write: unsafe { mem::transmute(write) },
write: unsafe { mem::transmute::<WriteFn<C>, unsafe fn()>(write) },
remove,
}
}
Expand Down
24 changes: 16 additions & 8 deletions src/core/replication_registry/rule_fns.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,14 @@ impl UntypedRuleFns {
);

RuleFns {
serialize: unsafe { mem::transmute(self.serialize) },
deserialize: unsafe { mem::transmute(self.deserialize) },
deserialize_in_place: unsafe { mem::transmute(self.deserialize_in_place) },
consume: unsafe { mem::transmute(self.consume) },
serialize: unsafe { mem::transmute::<unsafe fn(), SerializeFn<C>>(self.serialize) },
deserialize: unsafe {
mem::transmute::<unsafe fn(), DeserializeFn<C>>(self.deserialize)
},
deserialize_in_place: unsafe {
mem::transmute::<unsafe fn(), DeserializeInPlaceFn<C>>(self.deserialize_in_place)
},
consume: unsafe { mem::transmute::<unsafe fn(), ConsumeFn<C>>(self.consume) },
}
}
}
Expand All @@ -53,10 +57,14 @@ impl<C: Component> From<RuleFns<C>> for UntypedRuleFns {
Self {
type_id: TypeId::of::<C>(),
type_name: any::type_name::<C>(),
serialize: unsafe { mem::transmute(value.serialize) },
deserialize: unsafe { mem::transmute(value.deserialize) },
deserialize_in_place: unsafe { mem::transmute(value.deserialize_in_place) },
consume: unsafe { mem::transmute(value.consume) },
serialize: unsafe { mem::transmute::<SerializeFn<C>, unsafe fn()>(value.serialize) },
deserialize: unsafe {
mem::transmute::<DeserializeFn<C>, unsafe fn()>(value.deserialize)
},
deserialize_in_place: unsafe {
mem::transmute::<DeserializeInPlaceFn<C>, unsafe fn()>(value.deserialize_in_place)
},
consume: unsafe { mem::transmute::<ConsumeFn<C>, unsafe fn()>(value.consume) },
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/server/events/event_data.rs
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,8 @@ impl ServerEventData {
receive: receive::<E>,
resend_locally: resend_locally::<E>,
reset: reset::<E>,
serialize: unsafe { mem::transmute(serialize) },
deserialize: unsafe { mem::transmute(deserialize) },
serialize: unsafe { mem::transmute::<SerializeFn<E>, unsafe fn()>(serialize) },
deserialize: unsafe { mem::transmute::<DeserializeFn<E>, unsafe fn()>(deserialize) },
}
}

Expand Down

0 comments on commit 009163c

Please sign in to comment.