blob: 4dfecd6aaadd57ae3d7825c7c540f7fa4dd52c56 [file] [log] [blame]
#![feature(concat_idents)]
#![allow(nonstandard_style)]
/// Generate 250 items that all match the query, starting with the longest.
/// Those long items should be dropped from the result set, and the short ones
/// should be shown instead.
macro_rules! generate {
([$($x:ident),+], $y:tt, $z:tt) => {
$(
generate!(@ $x, $y, $z);
)+
};
(@ $x:ident , [$($y:ident),+], $z:tt) => {
pub struct $x;
$(
generate!(@@ $x, $y, $z);
)+
};
(@@ $x:ident , $y:ident, [$($z:ident: $zt:ident),+]) => {
impl $y {
pub fn $x($($z: $zt,)+) {}
}
}
}
pub struct First;
pub struct Second;
pub struct Third;
pub struct Fourth;
pub struct Fifth;
generate!(
[a, b, c, d, e],
[a, b, c, d, e, f, g, h, i, j],
[a: First, b: Second, c: Third, d: Fourth, e: Fifth]
);
generate!(
[f, g, h, i, j],
[a, b, c, d, e, f, g, h, i, j],
[a: First, b: Second, c: Third, d: Fourth]
);
generate!(
[k, l, m, n, o],
[a, b, c, d, e, f, g, h, i, j],
[a: First, b: Second, c: Third]
);
generate!(
// reverse it, just to make sure they're alphabetized
// in the result set when all else is equal
[t, s, r, q, p],
[a, b, c, d, e, f, g, h, i, j],
[a: First, b: Second]
);
generate!(
[u, v, w, x, y],
[a, b, c, d, e, f, g, h, i, j],
[a: First]
);