Add serde_as compatible versions for the existing duplicate key and value handling. (#534)
The new types MapPreventDuplicates, MapFirstKeyWins, SetPreventDuplicates, and SetLastValueWins can replace the existing modules maps_duplicate_key_is_error, maps_first_key_wins, sets_duplicate_value_is_error, and sets_last_value_wins.
Added a new KeyValueMap type using the map key as a struct field. (#341)
This conversion is useful for maps, where an ID value is the map key, but the ID should become part of a single struct.
The conversion allows this, by using a special field named $key$.
This conversion is possible for structs and maps, using the $key$ field.
Tuples, tuple structs, and sequences are supported by turning the first value into the map key.
Each of the SimpleStructs
// Somewhere there is a collection:
// #[serde_as(as = "KeyValueMap<_>")]
// Vec<SimpleStruct>,
#[derive(Serialize, Deserialize)]
struct SimpleStruct {
b: bool,
// The field named $key$ will become the map key
#[serde(rename = "$key$")]
id: String,
i: i32,
}
will turn into a JSON snippet like this.
"id-0000": {
"b": false,
"i": 123
},
Changed
Relax the trait bounds of Seq to allow for more custom types. (#565)
This extends the support beyond tuples.
Fixed
EnumMap passes the human_readable status of the Serializer to more places.
Support alloc on targets without target_has_atomic = "ptr". (#560)
Thanks to @vembacher for reporting and fixing the issue.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Updates the requirements on serde_with to permit the latest version.
Release notes
Sourced from serde_with's releases.
Commits
900bc16
Merge #56845dca53
Bump version to 2.3.0bcc23aa
Merge #5660c5e7b1
Add changelog entry429f027
Merge #56788270ae
Update documentation forSeq
type0e4fef6
Add a test case showing the new flexibility ofSeq
361f0b1
Generalize the trait bounds ofSeq
c0060fd
Make all uses of theserde_as
macros require an extra importfa2fab7
Convert seq to map usingMap
instead of the olderBTreeMap
/HashMap
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)