NIFs have a major downside in that it can take down the entire BEAM if they misbehave.
And a huge reason why people use Erlang, is its resiliency from outages.
With Rust memory protection, it gives people more confidence in using NIFs for exactly that reason.
Rustler being a Rust library to write Rust NIFs for Elixir. So I guess you have to compile the NIF first and then use it.
On the other hand Zigler seems to be an Elixir library that you give a string of zig code and it probably offloads compilation to the zig compiler. Since Elixir is compiled to bytecode, if you don't modify it won't get unecessary recompiled I guess so the approach has merit I think.
Btw it's a sigil'ed string, that is the result of a function that takes a string and returns one rather than a string literal