#spell #aliases #macro #drop #named #macros-are-magic #obliviate

code-spells

Aliases some common (and less common) code snippets to macros named after thematically appropriate spells from Harry Potter, so that instead of calling drop(x), you can cast obliviate!(x)

6 releases

new 0.2.4 Nov 23, 2024
0.2.3 Oct 11, 2024
0.2.2 Apr 26, 2023
0.2.1 Mar 30, 2023
0.1.0 Mar 29, 2023

#503 in Rust patterns

Download history 156/week @ 2024-10-11 6/week @ 2024-10-18 6/week @ 2024-11-01 3/week @ 2024-11-08 2/week @ 2024-11-15 121/week @ 2024-11-22

132 downloads per month

MIT/Apache

19KB
246 lines

code-spells

Do you think Rust macros are a bit like magic? I do too!
This crate aliases some common (and some less common) code snippets to macros named after thematically appropriate spells from Harry Potter.
E.g. the drop function can now be cast with obliviate!, Pin::new() with immobulus!, and if you want protection from harmful dementors this crate lets you cast expecto_patronum!(expr, "message") instead of calling expr.expect("message").

let v1 = vec![erecto!(i32); 5];
let mut v2 = geminio!(&v1);
obliviate!(v1);
accio!(expecto_patronum!(v2.get_mut(0), "Dementors B-gone!")) = 5;

Also aliases unsafe to the macro unforgivable!, because what could be more unforgivable than undefined behaviour?

expecto-patronum

Name handover

Since this crate is just a joke, if you have an idea for an actually useful crate for which you want this name, contact the author at the email in the Cargo.toml.


License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

No runtime deps