score-set 0.6.0

A Rust library for building static weighted scoring operator sets
Documentation
// @generated by xtask. Do not edit by hand.
// ---------------------------------------------------------------------------
// Per-arity `ScoreSetTrait32` impls + `score_set!` macro.
//
// The trait and `Scored32` struct live in `src/metric_f32.rs`.
// Arity 1 is hand-written (macro_rules cannot reliably produce 1‑tuples).
// Arities 2–64 use the `impl_score_set32!` helper macro,
// feature-gated behind `fixed-tuple-N`.  Default feature: `level-8`.
//
// Run `cargo run -p xtask -- gen --max <N>` to regenerate.
// ---------------------------------------------------------------------------

/// Internal helper: implement `ScoreSetTrait32<C>` for a tuple of arity 2+.
macro_rules! impl_score_set32 {
    ($($idx:tt $F:ident),+) => {
        impl<C, $($F: Fn(&C) -> f32),+> crate::ScoreSetTrait32<C>
            for ($(crate::Metric32<C, $F>,)+)
        {
            fn weighted_sum(&self, weights: &[f32], ctx: &C) -> f32 {
                0.0_f32 $(+ self.$idx.eval(ctx).map(|w| w.into_inner()).unwrap_or(0.0) * weights[$idx])+
            }
            fn collect_breakdown(
                &self,
                weights: &[f32],
                ctx: &C,
            ) -> alloc::vec::Vec<crate::Breakdown32> {
                alloc::vec![
                    $(self.$idx.make_breakdown(weights[$idx], ctx),)+
                ]
            }
        }
    };
}

// ---- arity 1 (hand-written: macro_rules cannot reliably produce 1‑tuples) ----
#[cfg(feature = "fixed-tuple-1")]
impl<C, F0: Fn(&C) -> f32> crate::ScoreSetTrait32<C> for (crate::Metric32<C, F0>,) {
    fn weighted_sum(&self, weights: &[f32], ctx: &C) -> f32 {
        self.0.eval(ctx).map(|w| w.into_inner()).unwrap_or(0.0) * weights[0]
    }
    fn collect_breakdown(&self, weights: &[f32], ctx: &C) -> alloc::vec::Vec<crate::Breakdown32> {
        alloc::vec![self.0.make_breakdown(weights[0], ctx)]
    }
}

// ---- arity 2 ----
#[cfg(feature = "fixed-tuple-2")]
impl_score_set32!(0 F0, 1 F1);

// ---- arity 3 ----
#[cfg(feature = "fixed-tuple-3")]
impl_score_set32!(0 F0, 1 F1, 2 F2);

// ---- arity 4 ----
#[cfg(feature = "fixed-tuple-4")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3);

// ---- arity 5 ----
#[cfg(feature = "fixed-tuple-5")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4);

// ---- arity 6 ----
#[cfg(feature = "fixed-tuple-6")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5);

// ---- arity 7 ----
#[cfg(feature = "fixed-tuple-7")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6);

// ---- arity 8 ----
#[cfg(feature = "fixed-tuple-8")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7);

// ---- arity 9 ----
#[cfg(feature = "fixed-tuple-9")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8);

// ---- arity 10 ----
#[cfg(feature = "fixed-tuple-10")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9);

// ---- arity 11 ----
#[cfg(feature = "fixed-tuple-11")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10);

// ---- arity 12 ----
#[cfg(feature = "fixed-tuple-12")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11);

// ---- arity 13 ----
#[cfg(feature = "fixed-tuple-13")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12);

// ---- arity 14 ----
#[cfg(feature = "fixed-tuple-14")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13);

// ---- arity 15 ----
#[cfg(feature = "fixed-tuple-15")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14);

// ---- arity 16 ----
#[cfg(feature = "fixed-tuple-16")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15);

// ---- arity 17 ----
#[cfg(feature = "fixed-tuple-17")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16);

// ---- arity 18 ----
#[cfg(feature = "fixed-tuple-18")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17);

// ---- arity 19 ----
#[cfg(feature = "fixed-tuple-19")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18);

// ---- arity 20 ----
#[cfg(feature = "fixed-tuple-20")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19);

// ---- arity 21 ----
#[cfg(feature = "fixed-tuple-21")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20);

// ---- arity 22 ----
#[cfg(feature = "fixed-tuple-22")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21);

// ---- arity 23 ----
#[cfg(feature = "fixed-tuple-23")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22);

// ---- arity 24 ----
#[cfg(feature = "fixed-tuple-24")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23);

// ---- arity 25 ----
#[cfg(feature = "fixed-tuple-25")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24);

// ---- arity 26 ----
#[cfg(feature = "fixed-tuple-26")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25);

// ---- arity 27 ----
#[cfg(feature = "fixed-tuple-27")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26);

// ---- arity 28 ----
#[cfg(feature = "fixed-tuple-28")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27);

// ---- arity 29 ----
#[cfg(feature = "fixed-tuple-29")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28);

// ---- arity 30 ----
#[cfg(feature = "fixed-tuple-30")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29);

// ---- arity 31 ----
#[cfg(feature = "fixed-tuple-31")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30);

// ---- arity 32 ----
#[cfg(feature = "fixed-tuple-32")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31);

// ---- arity 33 ----
#[cfg(feature = "fixed-tuple-33")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32);

// ---- arity 34 ----
#[cfg(feature = "fixed-tuple-34")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33);

// ---- arity 35 ----
#[cfg(feature = "fixed-tuple-35")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34);

// ---- arity 36 ----
#[cfg(feature = "fixed-tuple-36")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35);

// ---- arity 37 ----
#[cfg(feature = "fixed-tuple-37")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36);

// ---- arity 38 ----
#[cfg(feature = "fixed-tuple-38")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37);

// ---- arity 39 ----
#[cfg(feature = "fixed-tuple-39")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38);

// ---- arity 40 ----
#[cfg(feature = "fixed-tuple-40")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39);

// ---- arity 41 ----
#[cfg(feature = "fixed-tuple-41")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40);

// ---- arity 42 ----
#[cfg(feature = "fixed-tuple-42")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41);

// ---- arity 43 ----
#[cfg(feature = "fixed-tuple-43")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41, 42 F42);

// ---- arity 44 ----
#[cfg(feature = "fixed-tuple-44")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41, 42 F42, 43 F43);

// ---- arity 45 ----
#[cfg(feature = "fixed-tuple-45")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41, 42 F42, 43 F43, 44 F44);

// ---- arity 46 ----
#[cfg(feature = "fixed-tuple-46")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41, 42 F42, 43 F43, 44 F44, 45 F45);

// ---- arity 47 ----
#[cfg(feature = "fixed-tuple-47")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41, 42 F42, 43 F43, 44 F44, 45 F45, 46 F46);

// ---- arity 48 ----
#[cfg(feature = "fixed-tuple-48")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41, 42 F42, 43 F43, 44 F44, 45 F45, 46 F46, 47 F47);

// ---- arity 49 ----
#[cfg(feature = "fixed-tuple-49")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41, 42 F42, 43 F43, 44 F44, 45 F45, 46 F46, 47 F47, 48 F48);

// ---- arity 50 ----
#[cfg(feature = "fixed-tuple-50")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41, 42 F42, 43 F43, 44 F44, 45 F45, 46 F46, 47 F47, 48 F48, 49 F49);

// ---- arity 51 ----
#[cfg(feature = "fixed-tuple-51")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41, 42 F42, 43 F43, 44 F44, 45 F45, 46 F46, 47 F47, 48 F48, 49 F49, 50 F50);

// ---- arity 52 ----
#[cfg(feature = "fixed-tuple-52")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41, 42 F42, 43 F43, 44 F44, 45 F45, 46 F46, 47 F47, 48 F48, 49 F49, 50 F50, 51 F51);

// ---- arity 53 ----
#[cfg(feature = "fixed-tuple-53")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41, 42 F42, 43 F43, 44 F44, 45 F45, 46 F46, 47 F47, 48 F48, 49 F49, 50 F50, 51 F51, 52 F52);

// ---- arity 54 ----
#[cfg(feature = "fixed-tuple-54")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41, 42 F42, 43 F43, 44 F44, 45 F45, 46 F46, 47 F47, 48 F48, 49 F49, 50 F50, 51 F51, 52 F52, 53 F53);

// ---- arity 55 ----
#[cfg(feature = "fixed-tuple-55")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41, 42 F42, 43 F43, 44 F44, 45 F45, 46 F46, 47 F47, 48 F48, 49 F49, 50 F50, 51 F51, 52 F52, 53 F53, 54 F54);

// ---- arity 56 ----
#[cfg(feature = "fixed-tuple-56")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41, 42 F42, 43 F43, 44 F44, 45 F45, 46 F46, 47 F47, 48 F48, 49 F49, 50 F50, 51 F51, 52 F52, 53 F53, 54 F54, 55 F55);

// ---- arity 57 ----
#[cfg(feature = "fixed-tuple-57")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41, 42 F42, 43 F43, 44 F44, 45 F45, 46 F46, 47 F47, 48 F48, 49 F49, 50 F50, 51 F51, 52 F52, 53 F53, 54 F54, 55 F55, 56 F56);

// ---- arity 58 ----
#[cfg(feature = "fixed-tuple-58")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41, 42 F42, 43 F43, 44 F44, 45 F45, 46 F46, 47 F47, 48 F48, 49 F49, 50 F50, 51 F51, 52 F52, 53 F53, 54 F54, 55 F55, 56 F56, 57 F57);

// ---- arity 59 ----
#[cfg(feature = "fixed-tuple-59")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41, 42 F42, 43 F43, 44 F44, 45 F45, 46 F46, 47 F47, 48 F48, 49 F49, 50 F50, 51 F51, 52 F52, 53 F53, 54 F54, 55 F55, 56 F56, 57 F57, 58 F58);

// ---- arity 60 ----
#[cfg(feature = "fixed-tuple-60")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41, 42 F42, 43 F43, 44 F44, 45 F45, 46 F46, 47 F47, 48 F48, 49 F49, 50 F50, 51 F51, 52 F52, 53 F53, 54 F54, 55 F55, 56 F56, 57 F57, 58 F58, 59 F59);

// ---- arity 61 ----
#[cfg(feature = "fixed-tuple-61")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41, 42 F42, 43 F43, 44 F44, 45 F45, 46 F46, 47 F47, 48 F48, 49 F49, 50 F50, 51 F51, 52 F52, 53 F53, 54 F54, 55 F55, 56 F56, 57 F57, 58 F58, 59 F59, 60 F60);

// ---- arity 62 ----
#[cfg(feature = "fixed-tuple-62")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41, 42 F42, 43 F43, 44 F44, 45 F45, 46 F46, 47 F47, 48 F48, 49 F49, 50 F50, 51 F51, 52 F52, 53 F53, 54 F54, 55 F55, 56 F56, 57 F57, 58 F58, 59 F59, 60 F60, 61 F61);

// ---- arity 63 ----
#[cfg(feature = "fixed-tuple-63")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41, 42 F42, 43 F43, 44 F44, 45 F45, 46 F46, 47 F47, 48 F48, 49 F49, 50 F50, 51 F51, 52 F52, 53 F53, 54 F54, 55 F55, 56 F56, 57 F57, 58 F58, 59 F59, 60 F60, 61 F61, 62 F62);

// ---- arity 64 ----
#[cfg(feature = "fixed-tuple-64")]
impl_score_set32!(0 F0, 1 F1, 2 F2, 3 F3, 4 F4, 5 F5, 6 F6, 7 F7, 8 F8, 9 F9, 10 F10, 11 F11, 12 F12, 13 F13, 14 F14, 15 F15, 16 F16, 17 F17, 18 F18, 19 F19, 20 F20, 21 F21, 22 F22, 23 F23, 24 F24, 25 F25, 26 F26, 27 F27, 28 F28, 29 F29, 30 F30, 31 F31, 32 F32, 33 F33, 34 F34, 35 F35, 36 F36, 37 F37, 38 F38, 39 F39, 40 F40, 41 F41, 42 F42, 43 F43, 44 F44, 45 F45, 46 F46, 47 F47, 48 F48, 49 F49, 50 F50, 51 F51, 52 F52, 53 F53, 54 F54, 55 F55, 56 F56, 57 F57, 58 F58, 59 F59, 60 F60, 61 F61, 62 F62, 63 F63);

/// Combine heterogeneous metrics into a zero-vtable, zero-heap-allocation
/// weighted scorer.
///
/// Each metric can have a different closure type.
///
/// # Errors
/// Returns `Err` if any weight is not strictly positive (`> 0` and finite).
#[macro_export]
macro_rules! score_set32 {
    ($($w:expr => $m:expr),+ $(,)?) => {{
        let raw = [$($w as f32),+];
        $crate::Scored32::new(($($m,)+), &raw)
    }};
}