Skip to main content

score_set/
macros.rs

1/// Declare a set of `weight => metric` pairs.
2///
3/// Each weight is validated > 0 via [`GtZero`](crate::GtZero). The macro
4/// normalizes weights and returns a [`ScoreSet`](crate::ScoreSet) directly.
5///
6/// # Example
7///
8/// ```ignore
9/// let ms = score_set! {
10///     2.0 => gc_metric,
11///     3.0 => len_metric,
12///     5.0 => spec_metric,
13/// }?;
14/// ```
15#[macro_export]
16macro_rules! score_set {
17    ($($weight:expr => $metric:expr),+ $(,)?) => {
18        (|| -> Result<_, &'static str> {
19            $crate::ScoreSet::normalize((
20                $($crate::raw_member($weight, $metric)?,)+
21            ))
22        })()
23    };
24}