Rust. I've been using it for a while, and I've been using more software written in it lately. Stuff you make with it is just better in most ways. In other languages, you have to go above and beyond to make your code fully correct, safe, user friendly, and every trait I value in software. Rust makes those things easy, and so people are more willing to do them, and so things that get made in it are better. Oftentimes it's just a matter of pulling in a crate and adding a few lines of code.
I'm learning Rust at the moment and I too think I have some reservations with its syntax. Most of these reservations come from my strong preference for functional programming over OOP.
I am unsure if I like method-syntax period, even if it isn't inherently OO. Chaining just makes me feel uncomfortable in a way piping doesn't.
Also it seems idiomatic for values of enumerated types to be written Type::Enum, which seems ugly and unnecessary.
Author is removing every part of the initial function, admitting there are reasons those things are there in the first place, only to be left with a slightly more verbose version of an equivalent python implementation. Well then just use python?
Author also doesn't seem to understand what static polymorphism is/why this specific function is generic. It's not strictly about "bytes", it's about avoiding virtual calls/have nicer API. Author conveniently omits mentioning the clone() calls their version requires from the client call. Or they would make everything automatically cloned, and I already addressed that in the first paragraph I
Finally, standard libraries are notoriously bad examples of "normal" code. They mention it, but still declare that that their example is relevant. If the functions I wrote were compiled and used thousands of times per day I would probably worry more about splitting generic and concrete implementations. I'll take this over anything in the C++ standard library (which is a much more relevant language to compare rust with than e.g. python)
I think what you're calling ugly is just static typing. There's no way to make it look beautiful unless you leave the types away, but then you either end up with some kind of dynamically typed looking language by declaring things twice: once with types and then without.
At first glance, sure it would be easier to read, but if you have to look for the types then things get much harder. Either the types will be in comments, on different lines, or in a different file entirely.
It's doubtful you'll find a statically typed language that does a better job. C/C++ look even worse than rust. Go and Zig don't look good either, IMO.
At first glance, sure it would be easier to read, but if you have to look for the types then things get much harder. Either the types will be in comments, on different lines, or in a different file entirely.
This is pretty much how OCaml works and you can omit the types altogether if you don't specify an interface file, in most cases. But it's not hard to deal with in practice since IDEs (and text editor + LSP plugin) can easily show the inferred type on inspection.
Nevertheless, I don't really find Rust to be ugly either.