ic-wire-derive 0.7.24

Serde layout metadata derive for ic-wire
Documentation

IC Wire metadata derive

The optional endpoint feature also implements the query/update attributes re-exported by ic_wire::endpoint. They supply Wire codec hooks to Platform's maintained entrypoint generator; they implement neither IC exports nor an executor. Consumers should enable the feature on ic-wire, not use this support crate directly.

Wire describes ordinary Serde layouts for IC Wire’s optional host-side TypeScript generator. It generates no serializers and requires no field IDs. Use the re-export from ic-wire alongside ordinary Serialize / Deserialize. Concrete generic instantiations follow Serde declaration order. Unsupported Serde attributes fail explicitly; custom serializers require verified manual metadata. Use typescript::SchemaRegistry to collect named recursive declarations; the inline native_schema API retains its existing expansion and complexity limits. Field-level #[serde(borrow)] and #[serde(borrow = "'a")] are supported: they constrain deserialization lifetimes without changing the serialized layout. The same annotations are supported on newtype enum variants, as in Serde. Container-level #[serde(crate = "path")] is supported for direct and re-exported Serde paths. It selects Rust implementation paths without changing the metadata or wire representation; Serde validates and resolves the selected path.

This replaces the former serializer-generating Wire derive; the new derive requires ordinary Serde serialization and generates only metadata. See the runtime guide for migration, host feature gating, bounds and consumer responsibilities.

Licensed under the MIT License; see the packaged LICENSE.