proc-macro-workshop:seq-6

godme發表於2022-07-05
// This test case should hopefully be a freebie if all of the previous ones are
// passing. This test demonstrates using the seq macro to construct a const
// array literal.
//
// The generated code would be:
//
//     [Proc::new(0), Proc::new(1), ..., Proc::new(255),]

use seq::seq;

const PROCS: [Proc; 256] = {
    seq!(N in 0..256 {
        [
            #(
                Proc::new(N),
            )*
        ]
    })
};

struct Proc {
    id: usize,
}

impl Proc {
    const fn new(id: usize) -> Self {
        Proc { id }
    }
}

fn main() {
    assert_eq!(PROCS[32].id, 32);
}

這一關算是一個freebie,當然,前提是我們之前的[]也解析了的話。
當然,如果seq-5偷工減料,這一關是不會透過的。
但是使用cursor的強制匹配,我們不得不列舉了各種情況,這道題就是個弟弟。

本作品採用《CC 協議》,轉載必須註明作者和本文連結