3个版本 (破坏性更新)

0.3.0 2023年10月20日
0.2.0 2023年9月14日
0.1.0 2023年5月31日

19#创世 中排名

Download history 22/week @ 2024-04-07 28/week @ 2024-04-14 33/week @ 2024-04-21 33/week @ 2024-04-28 25/week @ 2024-05-05 30/week @ 2024-05-12 26/week @ 2024-05-19 34/week @ 2024-05-26 24/week @ 2024-06-02 18/week @ 2024-06-09 20/week @ 2024-06-16 30/week @ 2024-06-23 7/week @ 2024-06-30 13/week @ 2024-07-07 33/week @ 2024-07-14 22/week @ 2024-07-21

每月下载量 75
11 个crate中使用(通过 sov-modules-api

MIT/Apache

115KB
2.5K SLoC

sov-modules-macros

此crate提供针对模块系统专门设计的Rust宏。在开发模块时,开发者应主要关注业务逻辑的实现,无需担心低级细节,如消息序列化/反序列化或消息如何派发到适当的模块。

为了减轻编写重复和机械代码的负担,此crate提供了一组宏,可以生成必要的样板代码。

支持的派生宏如下

  1. ModuleInfo:为底层类型派生sov-modules-api::ModuleInfo实现。
  2. Genesis:为底层类型派生sov-modules-api::Genesis实现。
  3. DispatchCall:为底层类型派生sov-modules-api::DispatchCall实现。
  4. MessageCodec:为底层类型添加消息序列化/反序列化功能。

上述特质的定义可以在sov-modules-api crate中找到。

示例用法


/// Runtime is a collection of sov modules defined in the rollup.
#[derive(Genesis, DispatchCall, MessageCodec)]
pub struct Runtime<C: Context> {
    accounts: accounts::Accounts<C>,
    bank: sov_bank::Bank<C>,
    sequencer: sequencer::Sequencer<C>,
    ...
    some other modules
}

/// `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 call_result = RT::decode_call(message_data)

依赖

~4–14MB
~175K SLoC