> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://buildwithfern.com/learn/llms.txt.

## 0.46.6

**`(fix):`** List- and set-typed path parameters are now joined instead of being interpolated
directly, so a spec with an array path parameter produces an SDK that compiles.

Previously the parameter name was passed straight to `format!`, which does not
compile because `Vec<T>` has no `Display`:

```rust
pub async fn path_array(&self, ids: &Vec<String>, ..) -> Result<Echo, ApiError> {
    &format!("params/path-array/{}", ids),
```

That is an E0277 in the generated crate, so the failure is not limited to the
endpoint declaring the parameter — the whole SDK fails to build and every other
endpoint in it becomes unusable.

The elements are now joined with a comma, which is OpenAPI's default `simple`
path style, using `to_string()` per element so that any `Display` element type
works and not only `String`. Optional, nullable and map containers keep their
previous behavior: an optional path parameter cannot be omitted from a path, and
a map has no defined path serialization.

The non-default `label` (`.a.b`) and `matrix` (`;ids=a,b`) path styles remain
unimplemented.

## 0.46.5

**`(fix):`** Aliases of `unknown` (e.g. `AnyType` wrapping `serde_json::Value`) now derive
`Default`, so structs and aliases that contain them and derive `Default`
compile without manual patching. The struct generator's private copy of the
default analysis has been folded into the shared `hasDefaultImpl`, which is
now the single source of truth and no longer recurses forever on types that
reference each other. `#[serde(default)]` emission is unchanged: a required
`unknown` field still fails to deserialize when the key is missing.