Dynamic scope in Python: https://github.com/agrif/parameterize Nifty and definitely useful when you need it.
Related Posts
One nice feature of cargo that I wasn't previously aware of: you don't need to do anything after updating your Cargo.toml.
In npm, you need to remember to `npm i` after changing package.json. It's not declarative and the state can get out of sync.
Counter-intuitively, if you're writing a parser for a programming language, you need it to be a total function. As soon as you build IDE tooling, you need ASTs from invalid or incomplete input.
The parser should return (Ast, List<Error>) rather than Result<Ast, Error>.
Coming from JS or Python, imports in Rust feel weird. They're entirely optional aliases for fully qualified symbols, which are always available.
I don't know of many other languages where you can just start using libraries. Java is the only one I can think of.