Clippy has a ton of clever lints I haven't seen before.
E.g. it suggests that `let _v = println!("hello");` could be `println!("hello");` because a variable of type () is pointless.
Warning about recursion in main is an excellent idea too.
https://github.com/rust-lang/rust-clippy/blob/master/CHANGELOG.md#rust-139
Related Posts
Playing with Claude and my new programming language has made me add features that it wants. I think they're reasonable.
`for method in methods` -- custom syntax error explaining that `method` is a reserved word
`echo 'println("hello world")' | garden` -- eval snippets from stdin
I'm coming round to the view that a main function shouldn't take arguments.
For example, in Rust you have to call std::env::args() to get CLI arguments.
This makes Hello World less verbose, and gives you more flexibility in setting up CLI argument parsers.
Really cute approach to reporting type errors: when there's a type error, show an example of a runtime error that the type check has prevented!
Data-Driven Techniques for Type Error Diagnosis https://escholarship.org/uc/item/59s4h4pv