newton-core 0.4.16

newton protocol core sdk
/// macro for merging string fields - only merge if other field is non-empty
#[macro_export]
macro_rules! merge_string {
    ($self_field:expr, $other_field:expr) => {
        if !$other_field.is_empty() {
            $self_field = $other_field;
        }
    };
}

/// macro for merging numeric fields - only merge if other field is non-zero
#[macro_export]
macro_rules! merge_numeric {
    ($self_field:expr, $other_field:expr) => {
        if $other_field != 0 {
            $self_field = $other_field;
        }
    };
}

/// macro for merging address fields - only merge if other field is non-zero address
#[macro_export]
macro_rules! merge_address {
    ($self_field:expr, $other_field:expr) => {
        if !$other_field.is_empty() && $other_field != Address::ZERO {
            $self_field = $other_field;
        }
    };
}

/// macro for merging boolean fields - basically an OR
#[macro_export]
macro_rules! merge_bool {
    ($self_field:expr, $other_field:expr) => {
        if $other_field {
            $self_field = $other_field;
        }
    };
}

/// macro for merging option fields - only merge if other field is Some
#[macro_export]
macro_rules! merge_option {
    ($self_field:expr, $other_field:expr) => {
        if $other_field.is_some() {
            $self_field = $other_field;
        }
    };
}

/// macro that sets field from environment variable
#[macro_export]
macro_rules! env_string {
    ($field:expr, $env_var:literal) => {
        if let Ok(val) = env::var($env_var) {
            if !val.is_empty() {
                $field = val;
            }
        }
    };
}

/// macro that sets option field from environment variable
#[macro_export]
macro_rules! env_option {
    ($field:expr, $env_var:literal) => {
        if let Ok(val) = env::var($env_var) {
            if !val.is_empty() {
                $field = Some(val);
            }
        }
    };
}

/// Macro to hex-encode byte arrays, slices, or fixed-size byte arrays (like B256).
#[macro_export]
macro_rules! hex {
    ($bytes:expr) => {
        ::hex::encode($bytes)
    };
}