sigstat 0.0.4

Statsig Rust SDK for usage in multi-user server environments.
Documentation
#[macro_export]
macro_rules! unwrap_or_return {
    ($res: expr, $code: expr) => {
        match $res {
            Some(v) => v,
            None => return $code,
        }
    };
}

#[macro_export]
macro_rules! unwrap_or_return_with {
    ($res: expr, $func:expr) => {
        match $res {
            Some(v) => v,
            None => return $func(),
        }
    };
}

#[macro_export]
macro_rules! unwrap_or_else {
    ($res: expr, $else_block:block) => {
        match $res {
            Some(v) => v,
            None => $else_block,
        }
    };
}

#[macro_export]
macro_rules! ok_or_return_with {
    ($res:expr, $func:expr) => {
        match $res {
            Ok(v) => v,
            Err(e) => return $func(e),
        }
    };
}

#[macro_export]
macro_rules! unwrap_or_noop {
    ($res: expr) => {
        match $res {
            Some(v) => v,
            None => return,
        }
    };
}

#[macro_export]
macro_rules! read_lock_or_else {
    ($lock:expr, $else_block:block) => {
        match $lock.read() {
            Ok(data) => data,
            Err(_) => $else_block,
        }
    };
}

#[macro_export]
macro_rules! read_lock_or_return {
    ($tag: expr, $lock:expr, $code: expr) => {
        match $lock.read() {
            Ok(data) => data,
            Err(e) => {
                log_e!($tag, "Failed to read store: {}", e.to_string());
                return $code;
            }
        }
    };
}

#[macro_export]
macro_rules! serialize_if_not_none {
    ($state: expr, $field_name: expr, $value: expr) => {
        if let Some(v) = $value {
            $state.serialize_field($field_name, v)?
        }
    };
}