1# unified-init 统一初始化库 2 3:::{note} 4本文作者:龙进 <longjin@DragonOS.org> 5 62023年12月25日 7::: 8 9## 1. 简介 10 11该库位于`kernel/crates/unified-init`中. 12提供统一初始化宏,用于将函数注册到统一初始化列表中. 便于统一进行初始化. 13 14需要注意的是,初始化器的数组是no_mangle的,因此其命名应当遵守`模块_初始化器`的规则,防止重名导致意想不到的错误. 15 16 17## 2. 用法 18 19 20```rust 21use system_error::SystemError; 22use unified_init::define_unified_initializer_slice; 23use unified_init_macros::unified_init; 24 25/// 初始化函数都将会被放到这个列表中 26define_unified_initializer_slice!(INITIALIZER_LIST); 27 28#[unified_init(INITIALIZER_LIST)] 29fn init1() -> Result<(), SystemError> { 30 Ok(()) 31} 32 33#[unified_init(INITIALIZER_LIST)] 34fn init2() -> Result<(), SystemError> { 35 Ok(()) 36} 37 38fn main() { 39 assert_eq!(INITIALIZER_LIST.len(), 2); 40} 41 42``` 43 44## 3.开发 45 46需要测试的时候可以在`main.rs`写测试代码, 47然后在当前目录执行 `cargo expand --bin unified-init-expand` 48就可以看到把proc macro展开后的代码了. 49 50## 4. Maintainer 51 52龙进 <longjin@DragonOS.org> 53 54 55