52 lines
1.0 KiB
Markdown
52 lines
1.0 KiB
Markdown
# Qroc
|
|
|
|
Perl for procedural macros
|
|
|
|
## Have you ever...
|
|
* Thrown a fit over Rust's type system not allowing you to write truly awful code?
|
|
* Really wanted to just generate a tonne of code without having to learn how to correctly write proc macros?
|
|
|
|
## Qroc
|
|
|
|
Qroc allows you to write Perl directly into procedural macros. For instance,
|
|
|
|
```rs
|
|
fn main() {
|
|
println!("{}", add(1, 2));
|
|
}
|
|
|
|
#[perl {
|
|
$_ =~ s/populate/a + b/g;
|
|
}]
|
|
fn add(a: isize, b: isize) -> isize {
|
|
populate
|
|
}
|
|
```
|
|
|
|
...will compile to...
|
|
|
|
```rs
|
|
fn main() {
|
|
println!("{}", add(1, 2));
|
|
}
|
|
|
|
fn add(a: isize, b: isize) -> isize {
|
|
a + b
|
|
}
|
|
```
|
|
|
|
## Considerations
|
|
|
|
This package should be carefully considered before use. The cognitive dissonance of writing Perl
|
|
alongside Rust is probably too much for even the greatest 10xer to handle. Also, this is blatant
|
|
developer-environment RCE etc. as a feature. Hence, this package is perfectly safe in SOC2-compliant
|
|
environments.
|
|
|
|
## Correctness
|
|
|
|
No effort made.
|
|
|
|
## Compatibility
|
|
|
|
No effort made. Probably won't work on non-UNIX systems.
|