Skip Navigation
My frustrations with Rust. Why is this the most loved language?
  • I don't believe you, show me this project. As a personal project I have made a monolithic web server, that handles api calls, webpage calls etc, it uses axum, tokio and serde and when I run cargo build --release it compiles down to a 1.9mb binary. The only way I can see this happening is if you're not using a release build, which is a concept you should understand as a JS dev.

    I mean if you run a basic get request with the reqwest library and compile it, 32mb. In C is a few KB. You can have chatgpt generate for you if you wanna try it yourself but not write the code. This is because rust doesn't do proper tree shaking of code and bundles everything into it even if it's not necessary.

    What are you building where the end user doesn't care if the app performs well? Not caring about resource usage results in poor performance which results in dissatisfied users/customers which stop doing business with you. Have you heard about the unending war in JS land against bundle size?

    Yes but again with Rust it's bikeshedding. Websites with hundreds of millions of users run on php just fine, a high level dynamic language. So why are the complexities of Rust worth it to save like 10ms loading a website? Not that as a language I like php that much due to no typing, but performance for a web app really isn't that important.

    Rust again isn't that good for embedded either due to the large binary size. Maybe it would be good for writing a game engine or something very complex but why not just use Godot or something premade

    This argument has happened a few times that I know of. This is done for security purposes. If someone ships a binary blob you have to trust it to run, as a community, it was decided that we shouldnt do this.

    I get where you're going with this but it's not scalable. If you have to compile a large app with a lot of moving parts compiling everything from scratch wears out the CPU and takes forever. This is why oses just ship binaries for most things.

    This can also be solved with a file hash. When you compile the app, ensure the compiled file hash matches the hash of the binary in cargo. So you can get the best of both worlds

    No one is required to like every programming language, If you don't like rust, stop using it.

    Yes but the fact is rust is growing immensely in popularity so I made this post to understand what exactly I'm missing about it

  • My frustrations with Rust. Why is this the most loved language?
  • It's still less intuitive though, like someone looking at it doesn't know what a hashmap or String::from is and it's more code for the same thing. Once you start getting into Futures and Generics that's where the real unreadability starts

  • My frustrations with Rust. Why is this the most loved language?
  • Stuff a solo dev usually isn't gonna be coding. Plus nowadays if you're serious about gaming it looks like Godot + Gdscript or C# is the best option, there's no real point in coding an entire engine nowadays for most games.

  • My frustrations with Rust. Why is this the most loved language?
  • What is it trying to solve?

    I've seen a lot about how it solves "memory safety" but it's not an issue if you use a garbage collector which is perfectly suitable unless you write low level embedded systems or oses, and even if you use something like C or C++ where you manually allocate or deallocate, if the app is properly tested memory issues won't happen.

  • My frustrations with Rust. Why is this the most loved language?
  • What I mean is that Rust has overly verbose and often confusing syntax. It's difficult to look at the code and know what it does without having a ton of prior knowledge about how Rust's syntax works, so there's a massive upfront learning cost mostly due to syntax quirks

  • My frustrations with Rust. Why is this the most loved language?

    I'm making this post after endless frustrations with learning Rust and am about to just go back to TypeScript. Looking at Rust from the outside, you'd think it was the greatest thing ever created. Everyone loves this language to a point of being a literal cult and its popularity is skyrocketing. It's the most loved language on Stackoverflow for years on end. Yet I can't stand working in it, it gets in my way all the time for pointless reasons mostly due to bad ergonomics of the language. Below are most of the issues I've encountered:

    • Cargo is doing too many things at once. It's a build system but also a package manager but also manages dependencies? Idk what to even call it.

    • Syntax is very confusing for no reason. You can't just look at rust code and immediately know what it does. Having to pollute your code &, ? and .clone() everywhere to deal with ownership, using :: to refer to static methods instead of a "static" keyword. Rust syntax is badly designed compared to most other languages I used. In a massive codebase with tons of functions and moving parts this is unreadable. Let's take a look at hashmaps vs json

    rust let mut scores = HashMap::new(); scores.insert(String::from("Name"), Joe); scores.insert(String::from("Age"), 23);

    Supposively bad typescript javascript const person = { name: "joe", age: 23 }

    Js is way more readable. You can just look at it and immediately know what the code is doing even if you've never coded before. That's good design, so why do people love rust and dislike typescript then?

    • Similarly, Async code starts to look really ugly and overengineered in rust.

    • Multiple string types like &str, String, str, instead of just one "str" function

    • i32 i64 i8 f8 f16 f32 instead of a single unified "number" type like in typescript. Even in C you can just write "int" and be done with it so it's not really a "low level" issue.

    • Having to use #[tokio:main] to make the main function async (which should just be inbuilt functionality, btw tokio adds insane bloat to your program) yet you literally can't write code without it. Also what's the point of making the main function async other than 3rd party libraries requiring it?

    • Speaking of bloat, a basic get request in a low level language shouldn't be 32mb, it's around 16kb with C and libcurl, despite the C program being more lines of code. Why is it so bloated? This makes using rust for serious embedded systems unfeasible and C a much better option.

    • With cargo you literally have to compile everything instead of them shipping proper binaries. Why??? This is just a way to fry your cpu and makes larger libraries impossible to write. It should be on the part of the maintainer to build the package beforehand and add the binary. Note that i don't mean dependencies, I mean scripts with cargo install. There is no reason a script shouldn't be compiled beforehand.

    Another major issue I've encountered is libraries in Rust, or lack thereof. Every single library in rust is half-baked. Axum doesn't even have a home page and its docs are literally a readme file in cargo, how's that gonna compare to express or dotnet with serious industry backing? If you write an entire codebase in Axum and then the 1 dev maintaining it decides to quit due to no funding then what do you do? No GUI framework is as stable as something like Qt or GTK, literally every rust project has like 1 dev maintaining it in his free time and has "expect breaking changes" in the readme. Nothing is stable or enterprise ready with a serious team with money backing it.

    As for "memory safety", it's a buzzword. Just use a garbage collector. They're invulnerable to memory issues unless you write infinite while loop and suitable for 99% of applications.

    "But muh performance, garbage collectors are slow!"

    Then use C or C++ if you really need performance. Both of them are way better designed than Rust. In most cases though it's just bikeshedding. We're not in 1997 where we have 10mb of ram to work with, 9/10 times you don't need to put yourself through hell to save a few megabyes of a bundle size of a web app. There are apps with billions of users that run fine on php. Also, any program you write should be extensively tested before release, so you'd catch those memory errors if you aren't being lazy and shipping broken software to the public. So literally, what is the point of Rust?

    From the outside looking in, Rust is the most overwhelming proof possible to me that programmers are inheritly hobbists who like tinkering rather than actually making real world apps that solve problems. Because it's a hard language, it's complicated and it's got one frivelous thing it can market "memory safety!", and if you master it you're better than everyone else because you learned something hard, and that's enough for the entire programming space to rank it year after year the greatest language while rewriting minimal c programs in rust quadrupling the memory usage of them. And the thing is, that's fine, the issue I have is people lying and saying Rust is a drop in replacement for js and is the single greatest language ever created, like come on it's not. Its syntax and poor 3rd party library support prove that better than I ever can

    "Oh but in rust you learn more about computers/low level concepts, you're just not good at coding"

    Who cares? Coding is a tool to get shit done and I think devs forget this way too often, like if one works easier than the other why does learning lower level stuff matter? It's useless knowledge unless you specifically go into a field where you need lower level coding. Typescript is easy, rust is not. Typescript is therefore better at making things quick, the resourse usage doesn't matter to 99% of people and the apps look good and function good.

    So at this point I'm seeing very little reason to continue. I shouldn't have to fight a programming language, mostly for issues that are caused by lack of financial backing in 3rd party libraries or badly designed syntax and I'm about to just give up and move on, but I'm in the minority here. Apparently everyone loves dealing with hours and hours of debugging basic problems because it makes you a better programmer, or there's some information I'm just missing. Imo tho think rust devs need to understand there's serious value in actually making things with code, the ergonomics/good clean design of the language, and having serious 3rd party support/widespread usage of libraries. When you're running a company you don't have time to mess around with syntax quirks, you need thinks done, stable and out the door and I just don't see that happening with Rust.

    If anyone makes a serious comment/counterargument to any of my claims here I will respond to it.

    92
    InitialsDiceBearhttps://github.com/dicebear/dicebearhttps://creativecommons.org/publicdomain/zero/1.0/„Initials” (https://github.com/dicebear/dicebear) by „DiceBear”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)CY
    cybergazer @sh.itjust.works
    Posts 1
    Comments 8