palantir / conjure-rust

Conjure support for Rust
Apache License 2.0
20 stars 11 forks source link

Fix handling of nested maps #359

Closed sfackler closed 5 months ago

sfackler commented 5 months ago

Before this PR

Types using nested maps would fail to compile due to bad builder configuration:

error[E0277]: a value of type `BTreeMap<std::string::String, BTreeSet<std::string::String>>` cannot be built from an iterator over elements of type `(std::string::String, std::string::String)`
    --> /Volumes/git/public/conjure-rust/target/debug/build/conjure-test-43c1963ddae97566/out/conjure/map_map_value.rs:16:48
     |
16   |                     convert = |v|v.into_iter().collect()
     |                                                ^^^^^^^ value of type `BTreeMap<std::string::String, BTreeSet<std::string::String>>` cannot be built from `std::iter::Iterator<Item=(std::string::String, std::string::String)>`
     |
     = help: the trait `FromIterator<(std::string::String, std::string::String)>` is not implemented for `BTreeMap<std::string::String, BTreeSet<std::string::String>>`
     = help: the trait `FromIterator<(std::string::String, BTreeSet<std::string::String>)>` is implemented for `BTreeMap<std::string::String, BTreeSet<std::string::String>>`
     = help: for that trait implementation, expected `BTreeSet<std::string::String>`, found `std::string::String`
note: the method call chain might not have had the expected associated types

After this PR

==COMMIT_MSG== Fixed handling of nested maps fields. ==COMMIT_MSG==

changelog-app[bot] commented 5 months ago

Generate changelog in changelog-dir>`changelog/@unreleased`</changelog-dir

What do the change types mean? - `feature`: A new feature of the service. - `improvement`: An incremental improvement in the functionality or operation of the service. - `fix`: Remedies the incorrect behaviour of a component of the service in a backwards-compatible way. - `break`: Has the potential to break consumers of this service's API, inclusive of both Palantir services and external consumers of the service's API (e.g. customer-written software or integrations). - `deprecation`: Advertises the intention to remove service functionality without any change to the operation of the service itself. - `manualTask`: Requires the possibility of manual intervention (running a script, eyeballing configuration, performing database surgery, ...) at the time of upgrade for it to succeed. - `migration`: A fully automatic upgrade migration task with no engineer input required. _Note: only one type should be chosen._
How are new versions calculated? - ❗The `break` and `manual task` changelog types will result in a major release! - 🐛 The `fix` changelog type will result in a minor release in most cases, and a patch release version for patch branches. This behaviour is configurable in autorelease. - ✨ All others will result in a minor version release.

Type

- [ ] Feature - [ ] Improvement - [x] Fix - [ ] Break - [ ] Deprecation - [ ] Manual task - [ ] Migration

Description

Fixed handling of nested maps fields. **Check the box to generate changelog(s)** - [x] Generate changelog entry
autorelease3[bot] commented 5 months ago

Released 4.1.0