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}