Open polarathene opened 8 months ago
There is a YAML test with keys that are strings or numbers since the format supports that. Ron also supports this, but no equivalent test is present: https://github.com/mehcode/config-rs/issues/432
The YAML equivalent isn't exactly supported, config-rs
just handles converting a number type to a string type for the map key. The same could be handled for Ron (and any other formats that support such), since lossless serialization / roundtripping isn't a goal of the crate, only deserializing into a config struct?
Awareness of the lossy deserialization could probably be better documented π€·ββοΈ (similar is done for Char
into String
, number types too, while the new bytes variant isn't likely to be supported?)
Changes
0.9
refactored theNumber
value variant to be lossless, which requires more thorough matching.Cargo.toml
, (asValueKind
supports an equivalent type,config-rs
could opt-in).0.9
also introduces a newBytes
value variant to support rusty byte strings (Vec<u8>
). This was to resolve a roundtrip serialization bug with base64 strings when serdedeserialize_any
is used (which lacks a type hint and would deserialize as a literal string to bytes, instead of base64 decoded string to bytes).Relevance
I've had this sitting around for a while and meaning to push a PR before I forget π
This PR is an alternative to https://github.com/mehcode/config-rs/pull/472 and a sibling of https://github.com/mehcode/config-rs/pull/474
In particular Ron
0.9
is intended to be more robust withValue
better supporting untagged enums and similar compatibility issues.config-rs
is passing the Ron tests successfully regardless of Ron0.8
or0.9
release used.0.9
support there asdeserialize_any
to the untagged enum will fallback to theNil
variant when a variant is unsupported byconfig-rs
.config-rs
is generic across formats, that's less important so long as functionally the format meets test expectations.Ron
0.10
will continue to improve on theValue
type, which may be relevant forconfig-rs
.