11 releases

Uses new Rust 2024

0.3.5 Oct 2, 2025
0.3.2 Jul 24, 2025
0.2.0 Mar 5, 2025
0.1.0-rc.1 Dec 17, 2024
0.1.0-alpha.1 Oct 7, 2024

#2343 in Procedural macros

Download history 7/week @ 2025-07-09 163/week @ 2025-07-23 11/week @ 2025-08-20 7/week @ 2025-08-27 300/week @ 2025-09-03 28/week @ 2025-09-10 9/week @ 2025-09-17 48/week @ 2025-09-24 204/week @ 2025-10-01 47/week @ 2025-10-08 60/week @ 2025-10-15 28/week @ 2025-10-22

342 downloads per month
Used in 9 crates (3 directly)

Apache-2.0

20KB
414 lines

hax adt into

This crate provides the adt_into procedural macro, allowing for mirroring data types with small variations.

This crate is used by the frontend of hax, where we need to mirror a big part of the data types defined by the Rust compiler. While the abstract syntax trees (ASTs) from the Rust compiler expose a lot of indirections (identifiers one should lookup, additional informations reachable only via interactive queries), hax exposes the same ASTs, removing indirections and inlining additional informations.

The adt_into derive macro can be used on structs and enums. adt_into then looks for another #[args(<GENERICS>, from: FROM_TYPE, state: STATE_TYPE as SOME_NAME)] attribute. Such an attribute means that the struct or enum mirrors the type FROM_TYPE, and that the transformation is carried along with a state of type STATE_TYPE that will be accessible via the name SOME_NAME.

An example is available in the tests folder.

Dependencies

~2MB
~48K SLoC