Comment by dherman
2 months ago
Ha, I just tried the same trick with Rust:
//$HOME/.cargo/bin/rustc "$0" && ${0%.rs} "$@" ; exit
use std::env;
fn main() {
println!("hello, world!");
for arg in env::args() {
println!("arg: {arg}");
}
}
Total hack, and it litters ./ with the generated executable. But cute.
Fortunately this hack isn't necessary for rust, shebangs are syntactically valid and single-file scripts can be executed with cargo nightly: https://doc.rust-lang.org/nightly/cargo/reference/unstable.h...
I wish this was faster, in my tests it’s about 200ms startup consistently on my M4 MacBook. Otherwise very cool
Interesting! That seems unexpected, for a minimal hello-world program I'm averaging 14ms after the first execution:
```
$ echo 'fn main() { println!("hello, world!") }' > file.rs; hyperfine --warmup 1 'cargo +nightly -Zscript file.rs'
Benchmark 1: cargo +nightly -Zscript file.rs
```
1 reply →
Cool!
[dead]