This allows better backwards compatibility and serializing to heapless directly.
Given https://github.com/trussed-dev/cbor-smol/issues/11 I went with a breaking change update
(the `Serializer` field was public and existing implementations are put behind a breaking change)
Previously, we visited either strings or bytes so that the visitor had
to handle both cases. With this change, we always visit strings so that
the bytes visitor function can be optimized out. This significantly
reduces binary size.
The default serde deserialize derive accepts 3 types for identifiers:
- The name of the field as `str`
- The name of the field as ascii bytes
- The index of the field as u64
This PR changes deserialize_identifier to have compatibility with all of these
This is necessary for https://github.com/Nitrokey/fido-authenticator/issues/57,
which needs compatibility with both the str variant and the index variant