It appears that cross-compiling with Rust is rather straightforward: just install the target you'reβ¦ hmm, targeting with "rutsup target add <target>", and use "cargo build --target <target> --release" β not much harder than it is with Go.
Considering that your target is available via rustup β mine, PowerPC MUSL system wasn't and I had to build natively, I'll figure out how to add my own targets later. But building for my old ARM machine went without a hitch β and, surprisingly, the binary worksπ
In case some of the crates use C code and build something themselves, like ring crate does, you have to point cargo to the right tools using the environment variables, but in a lot of cases it figures everything out on its own.
Also rust crate version 0.16 didn't support 32-bit PowerPC properly so to port TUI RSS reader here https://github.com/veeso/tuifeed I had to update a few dependencies to use newer ring 0.17
Some problems arise from software relying on atomics (thread-safe types) from the standard library, which aren't portable β luckily, there is portable-atomic crate: https://github.com/taiki-e/portable-atomic
Replacing atomics from standard library with the ones from portable-atomic IS straightforward, but in my case it was a dependency of a dependency using it, so building the RSS reader involved adding a [patch.crates-io] section to Cargo.toml to use a local patched version of crate.
Now I have to figure out how to make ureq in this RSS reader use the proxy set with environmental variables. It looks trivial to accomplish: a matter of implementing the Default trait, which is now derived, for the structure (which would be an object in classic object oriented language) that is used as HTTP client.
Wow, turns out I didn't have to do any of this myself and there is a way to make ureq work exactly the same way Go standard facilities for HTTP requests do: this crate has "proxy_from_env" feature π