Expand description
Procedural macros for Nautilus. Provides #[custom_data] for defining custom data types
with generated boilerplate (constructor, HasTsInit, CustomDataTrait, optional Arrow, derives).
Attribute Macrosยง
- custom_
data - Expands a struct into a custom data type with generated impls:
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)], constructor, HasTsInit, CustomDataTrait, ArrowSchemaProvider, EncodeToRecordBatch, DecodeDataFromRecordBatch unlessno_arrowis set, CatalogPathPrefix, From/TryFrom for Data. Callnautilus_serialization::ensure_custom_data_registered::<T>()once per Arrow-enabled type, ornautilus_model::data::ensure_custom_data_json_registered::<T>()forno_arrowtypes. For Python, also callnautilus_model::data::register_rust_extractor::<T>()once per type. Requires fields to includets_eventandts_init(e.g.nautilus_core::UnixNanos). Supported field types include InstrumentId, AccountId, Currency, BarType, Params, UnixNanos, f64, f32, bool, String, u64, i64, u32, i32,Vec<f64>, andVec<u8>. Use#[custom_data_field(serde)]on a field to store any Serde serializable field as a Serde JSON-backed ArrowUtf8column. Python access uses typed dict conversion when bothKandVofHashMap<K, V>orIndexMap<K, V>are in the typed-element whitelist:InstrumentId,AccountId,Currency,BarType,Price,Quantity,Money,String,f64,f32,bool,u64,i64,u32,i32(seeis_typed_json_map_segmentincustom.rs). All other Serde-backed fields use the generic JSON bridge and accept/return JSON-compatible Python values.