Is it possible to do in Rust?
Yes
Is possible to do in Rust, by mistake, and not easily caught by a review?
Definitively not.
Is it possible to do in Rust?
Yes
Is possible to do in Rust, by mistake, and not easily caught by a review?
Definitively not.
DRY and YAGNI are awesome iif you also practice YNIRN (You Need It Right Now)! Otherwise you just get boilerplate of spaghetti
You got me in the first 3 quarters, not gonna lie!
There are cases where instead of origin/master..HEAD
you may want to use @{upstream}..HEAD
instead to compare with the upstream of your current branch. It's unfortunately quite unknown.
This post from 2022 was very interesting:
There are approximately 1.5 million total lines of Rust code in AOSP across new functionality and components [...] These are low-level components that require a systems language which otherwise would have been implemented in C++.
To date, there have been zero memory safety vulnerabilities discovered in Android’s Rust code.
https://security.googleblog.com/2022/12/memory-safe-languages-in-android-13.html
The quote (and the associated discussion) is such an important part of Rust and why I love this language so much. Anything that can be automated should at one point be automated reliably, and the sooner the better.
I absolutely agree that method extraction can be abused. One should not forget that locality is important. Functionnal idioms do help to minimise the layer of intermediate functions. Lamda/closure helps too by having the function much closer to its use site. And local variables can sometime be a better choice than having a function that return just an expression.
Good advice, clear, simple and to the point.
Stated otherwise: "whenever you need to add comments to an expression, try to use named intermediate variables, method or free function".
A fun read but it really seems that his writting style is hit or miss!
I never understood why python won agaist ruby. I find ruby an even better executable pseudo code language than python.
Awesome! It reminds me of that clip that uses the windows task manager to run doom on a 896 core CPU.
Neither foo(), nor add_missing_values() looks suspicious. Nonetheless, if
v.push_back(3)
requiresv
to grow, thenref
becomes an invalid reference andstd::cout << ref
becomes UB (use after free). In Rust this would not compiles.It is order of magnitudes easier to have lifetime errors in C++ than in Rust (use after free, double free, data races, use before initialisation, …)