6 ms·
Ha, I just tried the same trick with Rust: //$HOME/.cargo/bin/rustc "$0" && ${0%.rs} "$@" ; exit use std::env; fn main() { println!("hello, w
by dherman 9mo 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.
- timcavel 9mo ago[dead]
- eolpin 9mo agoFortunately 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.html#script https://doc.rust-lang.org/nightly/cargo/reference/unstable.h...
- dherman 9mo agoCool!
- jswny 9mo agoI wish this was faster, in my tests it’s about 200ms startup consistently on my M4 MacBook. Otherwise very cool
- eolpin 9mo agoInteresting! 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 Time (mean ± σ): 14.0 ms ± 1.0 ms [User: 7.7 ms, System: 9.7 ms] Range (min … max): 12.2 ms … 17.5 ms 203 runs ```
- jswny 9mo agoAh I think it’s because I was testing with an external library in the top level TOML metadata