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.
|