Closed
Description
Since we know all of the tag types ahead of time, there's no reason we couldn't preserve the format-specific items (or the entire tag itself) in an immutable way inside the Tag
, using an enum
.
- This would be a global setting, like
allocation_limit
, which would be enabled by default. - On any call to
Tag::re_map()
, the format-specific items would be discarded. - On
Tag::save_to
, the format-specific write implementation would simplychain
the items to the iterator, for example:Line 1312 in be749a4
This would make #288 obsolete, and save users from metadata loss, due to the majority simply using the generic API for reads and writes.
This would not affect {split, merge}_tag
. It will only be used for Into::<Tag>::into(format_specific_tag)
, for example:
Lines 1285 to 1289 in be749a4
Not sure of this now, but this could also remove the need for ItemKey::Unknown
, allowing it to finally be Copy
. This has been a pain point forever.