sov-modules-macros
This crate provides Rust macros specifically designed to be used with the Module System. When developing a module, the developer's primary focus should be on implementing the business logic, without having to worry about low-level details such as message serialization/deserialization or how messages are dispatched to the appropriate module.
To alleviate the burden of writing repetitive and mechanical code, this crate offers a collection of macros that generate the necessary boilerplate code.
The following derive macros are supported:
ModuleInfo
: Derives the sov-modules-api::ModuleInfo
implementation for the underlying type.Genesis
: Derives the sov-modules-api::Genesis
implementation for the underlying type.DispatchCall
: Derives the sov-modules-api::DispatchCall
implementation for the underlying type.MessageCodec
: Adds message serialization/deserialization functionality to the underlying type.The definitions of the traits mentioned above can be found in the sov-modules-api crate.
Example usage:
```rust
/// Runtime is a collection of sov modules defined in the rollup.
pub struct Runtime
/// Genesis
allow initialization of the rollup in following way:
runtime.genesis(&configuration, working_set)
/// DispatchCall & MessageCodec
allows dispatching serialized messages to the appropriate module.
let callresult = RT::decodecall(message_data)
```