34 releases
| new 0.4.3 | Feb 3, 2026 |
|---|---|
| 0.4.2 | Feb 1, 2026 |
| 0.4.0 | Jan 31, 2026 |
| 0.3.15 | Jan 31, 2026 |
| 0.1.11 | Jan 14, 2026 |
#1487 in Procedural macros
Used in 4 crates
(2 directly)
580KB
13K
SLoC
hyperstack-macros
Procedural macros for defining HyperStack streams.
Overview
This crate provides the #[hyperstack] attribute macro that transforms annotated Rust structs into full streaming pipeline specifications, including:
- State struct generation with field accessors
- Handler creation functions for event processing
- IDL/Proto parser integration for Solana programs
- Automatic AST serialization for deployment
Installation
[dependencies]
hyperstack-macros = "0.2"
Usage
IDL-based Stream
use hyperstack_macros::{hyperstack, Stream};
#[hyperstack(idl = "idl.json")]
pub mod my_stream {
#[entity(name = "MyEntity")]
#[derive(Stream)]
struct Entity {
#[map(from = "MyAccount", field = "value")]
pub value: u64,
#[map(from = "MyAccount", field = "owner")]
pub owner: String,
}
}
Proto-based Stream
#[hyperstack(proto = ["events.proto"])]
pub mod my_stream {
// entity structs
}
Supported Attributes
| Attribute | Description |
|---|---|
#[map(...)] |
Map from account fields |
#[from_instruction(...)] |
Map from instruction fields |
#[event(...)] |
Capture instruction events |
#[snapshot(...)] |
Capture entire source data |
#[aggregate(...)] |
Aggregate field values |
#[computed(...)] |
Computed fields from other fields |
#[derive_from(...)] |
Derive values from instructions |
Generated Output
The macro generates:
{EntityName}Statestruct with all fieldsfields::module with field accessorscreate_spec()function returningTypedStreamSpec- Handler creation functions for each source
License
Apache-2.0
Dependencies
~1.2–2.3MB
~52K SLoC