Macro metaheuristics_nature::setting_builder[][src]

macro_rules! setting_builder {
    (
        $(#[$attr:meta])*
        $v:vis struct $name:ident {
            $(@$base:ident, $(@$base_field:ident = $base_default:expr,)*)?
            $($(#[$field_attr:meta])* $field:ident: $field_type:ty = $field_default:expr,)+
        }
    ) => { ... };
    (@$base:ident, $($field:ident: $field_type:ty,)+) => { ... };
}
Expand description

Define a data structure and its builder functions.

Use @ to denote the base settings, such as population number, task category or reporting interval.

use metaheuristics_nature::setting_builder;

setting_builder! {
    /// Real-coded Genetic Algorithm settings.
    pub struct GASetting {
        @base,
        @pop_num = 500,
        cross: f64 = 0.95,
        mutate: f64 = 0.05,
        win: f64 = 0.95,
        delta: f64 = 5.,
    }
}
let s = GASetting::default().pop_num(300).cross(0.9);