36 lines
2.3 KiB
Markdown
36 lines
2.3 KiB
Markdown
# Rust
|
|
*This article is part of the bloat and vomit inducing series*
|
|
|
|
Rust is a [bloated](bloat.md) and [open $ource](open_source.md) programming language. It was created out of frustration that
|
|
[C++](cpp.md) wasn't bloated and shitty enough.
|
|
|
|
The main "feature" of Rust is the so called borrow checker which will reject any code that considers as "unsafe", even rejecting completely
|
|
"safe" and valid code that Rust users have to resort to workarounds such as heap allocating everything and wrapping objects under a matryoshka
|
|
of `Box`, `Arc`, `Rc` and `dyn` objects. In the end, any non trivial Rust codebase will have a half-baked and buggy garbage collector (leaking).
|
|
|
|
Rust is noteworthy for bringing the web development "culture" into systems programming. That is, a ridiculous amount of dependencies
|
|
(even for extremely simple things to implement), constant influx of new "features" (including breaking changes) and an extremely toxic SJW community.
|
|
|
|
Currently the main use of Rust is doing rewrites that no one asked for of classic Unix tools (such as `ls`, `cat`, `find` or `grep`), but adding
|
|
piles of dependencies, colors or other useless eye candy bloat, see: <https://github.com/sharkdp/bat>.
|
|
|
|
It has to be noted that the "main" and "recommended" way of infecting your computer with Rust is by executing a random shell script from the internet LMAO.
|
|
|
|
Due to its extreme complexity and lack of formal specification, there's only the official compiler. Other independent attempts of implementing a Rust compiler
|
|
(such as gccrs) can't even compile a hello world yet.
|
|
|
|
Even the simplest data structures are an absolute pain to implement because of the borrow checker; linked lists for example,
|
|
are known to be very hard to implement in Rust. I kid you not, there's even a [whole book](https://rust-unofficial.github.io/too-many-lists/)
|
|
explaining how to implement such trivial data structure in Rust.
|
|
|
|
## The #RustDependencyChallenge
|
|
Go to your average non trivial rust project `Cargo.lock` file and when you find one that is less than 100 lines long you win.
|
|
|
|
## Less harmful alternatives
|
|
- [C](c.md)
|
|
- [Lisp](lisp.md)
|
|
- Even [Go](golang.md) is preferable.
|
|
- Learning how to use [pointers](pointer.md) properly.
|
|
|
|
## See also
|
|
- [drummyfish's take on Rust](https://www.tastyfish.cz/lrs/rust.html)
|