- Makro yang mengevaluasi logika Rust inline pada waktu kompilasi untuk menghasilkan dan menambahkan kode baru
- Menawarkan fleksibilitas dan performa yang lebih tinggi daripada makro procedural, sekaligus lebih mudah dibaca dan ditulis serta terasa lebih alami dibanding
macro_rules - Mendukung Input/Output dalam bentuk Token Stream/Macro Fragments/kode Rust
- Dukungan IDE, pemformatan kode, dapat didefinisikan inline, dan sangat mudah dibaca
- One-shot eval: memungkinkan penanganan operasi waktu kompilasi yang kompleks secara sederhana
const MY_NUM: usize = crabtime::eval! { (std::f32::consts::PI.sqrt() * 10.0).round() as usize }; - Makro fungsional (Function-like Macros)
- Dapat mendefinisikan makro fungsional dengan
#[crabtime::function] - Fungsi yang didefinisikan akan diubah menjadi makro dan dijalankan pada saat build
- Dapat mengekspor makro dengan atribut standar
#[macro_export]
- Dapat mendefinisikan makro fungsional dengan
- Fungsi yang didefinisikan sebagai makro disisipkan ke fungsi
maindari proyek Rust sementara - Setelah kompilasi, kode yang dihasilkan dikembalikan melalui
stdout
1 komentar
Komentar Hacker News**
proc_macroterasa merepotkan karena membutuhkan crate terpisah, dan Crabtime tampaknya menyelesaikan hal itucomptimemilik Zig, Crabtime tampak lebih seperti versi perluasan dari evaluasi saat waktu kompilasi yang sederhanaRustDocuntuk mendapatkan informasi tipecomptimeyang sesungguhnyacomptimemilik Zig bukan macro sintaks, sehingga lebih mudah dipahami dan di-debugcomptime, banyak fitur bahasa lain bisa digantikan, sehingga bahasanya sendiri menjadi lebih sederhanacomptimeke bahasa yang kompleks membuat sulit memperoleh keuntungan kesederhanaan seperti pada Zigsyn, sehingga ada banyak hal yang harus dipelajaripaste!{}dancrabtime::output!{}, yang terakhir dinilai jauh lebih intuitifformilik Rust alih-alih pola macro yang rumitmacro_rulessaja punya batasan sehingga akhirnya menulis seluruh kodenya secara langsungproc_macro, tetapi biasanya harus menambahkan dependensi sepertisyn,quote, danproc_macro2, yang terasa kurang memuaskan