#spell #aliases #macro #named #drop #less #snippets

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)

4 releases

0.2.2 Apr 26, 2023
0.2.1 Mar 30, 2023
0.2.0 Mar 30, 2023
0.1.0 Mar 29, 2023

#1331 in Rust patterns

MIT license

17KB
245 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?

Related crates

expecto-patronum


lib.rs:

Do you think Rust macros are a bit like magic? I do too!

With this crate you can live your wizard dreams right in your source code. It aliases some common (and some less common) code snippets to macros named after thematically appropriate spells from Harry Potter.

This enables you to cast geminio!(item) instead of forcing you to call item.clone().

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?

No runtime deps