Crates.io | init_guard |
lib.rs | init_guard |
version | 1.3.0 |
source | src |
created_at | 2020-08-20 12:59:34.222065 |
updated_at | 2020-08-20 14:55:12.918237 |
description | A Synchronization Primitive for guarding against double initialization |
homepage | https://github.com/estchd/init_guard |
repository | https://github.com/estchd/init_guard |
max_upload_size | |
id | 278615 |
size | 4,777 |
The Init_Guard Crate provides a Synchronization Primitive, that can be used to guard against double initialization.
For this, the init_guard macro is exported. The init_guard macro creates a new module that contains everything needed for the init_guard.
The Module contains two public Methods, init() and has_init().
The has_init function has the following definition:
fn has_init() -> bool
The has_init function returns true, if the init_guard was already initialized.
The init function has the following definition:
fn init() -> Result<(),()>
The init function returns Ok, if the init_guard was succesfully initialized and Err, if it was already initialized before
init_guard!(HAS_LOGGER_INIT); // Create the init_guard
fn init_logger() -> Result<(),String> {
match HAS_LOGGER_INIT::init() {
Ok(_) => {},
Err(_) => {return Err("Logger is already initialized!".to_string())}
}
// Everything after this is now safe from double initialization
// Do your actual logger initialization here
}