🛠 Cargo Expand: Загляни под капот макросам
Признайтесь, у вас бывало такое: навесили #[derive(Serialize)] или сложный макрос из sqlx, получили странную ошибку компиляции и сидите в ступоре?
Макросы это круто, но это черный ящик. Чтобы превратить его в прозрачный, поставьте cargo-expand.
cargo install cargo-expand
Запускаем:
cargo expand
И видите весь тот ужас (или красоту), который генерируется до того, как код попадет к компилятору. Это маст-хэв тулза при отладке async трейтов (привет, async-trait крейт) и понимании того, как работает "магия" фреймворков типа Actix или Rocket.
P.S. Только не пугайтесь, когда увидите, во что разворачивается println!.
#rust #tools #cargo #macro
Признайтесь, у вас бывало такое: навесили #[derive(Serialize)] или сложный макрос из sqlx, получили странную ошибку компиляции и сидите в ступоре?
Макросы это круто, но это черный ящик. Чтобы превратить его в прозрачный, поставьте cargo-expand.
cargo install cargo-expand
Запускаем:
cargo expand
И видите весь тот ужас (или красоту), который генерируется до того, как код попадет к компилятору. Это маст-хэв тулза при отладке async трейтов (привет, async-trait крейт) и понимании того, как работает "магия" фреймворков типа Actix или Rocket.
P.S. Только не пугайтесь, когда увидите, во что разворачивается println!.
#rust #tools #cargo #macro