Skip to content

Add a serde::bytes module that encodes a Uuid as a byte string - #902

Open
ChrisJr404 wants to merge 1 commit into
uuid-rs:mainfrom
ChrisJr404:serde-bytes-module
Open

Add a serde::bytes module that encodes a Uuid as a byte string#902
ChrisJr404 wants to merge 1 commit into
uuid-rs:mainfrom
ChrisJr404:serde-bytes-module

Conversation

@ChrisJr404

Copy link
Copy Markdown

This picks up #893. The compact module serializes a Uuid as a [u8; 16] array, so formats that distinguish byte strings from sequences (CBOR, MessagePack) end up encoding it as 16 individually tagged integers instead of one byte string. In the CBOR example from the issue that is 32 bytes where serialize_bytes would take 17.

This adds a serde::bytes sibling module that mirrors the compact one but goes through serialize_bytes/deserialize_bytes, reusing the existing UuidBytesVisitor for the deserialize side. It is purely additive and leaves compact untouched, so nothing changes for existing users. As KodrAus noted on the issue, having a dedicated bytes module also makes it clearer that compact is the array encoding rather than a byte-string one.

The existing compact module serializes a Uuid as a [u8; 16] array, which
formats like CBOR and MessagePack encode as a sequence of 16 individually
tagged integers rather than a single byte string. Add a sibling serde::bytes
module that uses serialize_bytes/deserialize_bytes so those formats can encode
a Uuid in its natural 16 byte form.

Closes uuid-rs#893
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant