To be clear, you are suggesting:
To be clear, you are suggesting:
unsafe vs. unsound distinction (in rust):
On the first day of Christmas, my language gave to me A thought to make the software more free!
Coding in C is like camping. It's fun for a while, but eventually you really miss things like flushing toilets and grocery stores. I like using C, but I get frustrated every time I hit a wall trying to build features from other languages. C is a very WET language.
Sorry it took a while to respond. I though the parent comment and that comment were funny. Since this feature was just released it seemed appropriate.
from After a week with Rust, slightly edited for spelling/grammar/punctuation
relatively speaking , my rust programs are like Leonardo DiCaprio in the Revenant, killing grizzly bears with their bare hands, dying and being frozen into a giant ice cubes then, surprise!, they're actually alive.
they can handle a lot, they tend to experience far fewer bugs that come around days or weeks after going into production.
my python programs, otoh, are like William Henry Harrison. Inauguration day! exciting! kind of chilly out here. uh oh -- pneumonia ... dang it!
I wouldn't nominate that as a great quote, because, to be frank, "less expressive" is a terrible formulation. It has a strong negative connotation while also missing the point, which apparently stems from the confusion between "expressiveness" and the number of features or the ability to transliterate code from $LANGUAGE. That is counter-productive when e.g. trying to market (or even just objectively describe) the language.
"Stricter" in order to protect the programmer from themselves? Yes. "Less expressive?" Not at all. It's perfectly possible to do just about anything in Rust that is possible in existing general-purpose languages, just not how it is usual elsewhere. Indeed, Rust has no inheritance or garbage collection or reflection or overloading (or …). But one can solve the same problems by other, more principled means, and often more elegantly so than whatever the equivalent in another language would look like. (Rendering Rust more, rather than less, expressive in my eyes.)
Expressiveness is a high-level concept; it's about the spectrum of problems to solve or goals to achieve. It is not about low-level details (such as "I can't make two mutable pointers to the same value").
Why not just propose a different, improved-from-your-perspective formulation of the ideas in the quote, whose purpose clearly is to point out that approaches that work in other languages very often don't work in Rust, but that problems that seem to be#1 solveable in other languages, albeit unsafely, can be solved completely safely in Rust. In other words, "Hack without fear."
#1 "seem to be", because often such solutions are not actually solved correctly in C/C++/etc.
imagine a From<[u8]> for SHA-512, rust automatically impls a quantum computer to find all inputs that result in that hash :^)
seri in #beginners on official discord server.
Context: the OP in the question confused the complementary auto traits (from & into) and thought that
From<T> for U automatically implements
Into<T> for U instead of
Into<U> for T
In response to community flagging this post as 'inappropriate', I've decided to withdraw this post.
However, to give context to @ZiCog's reply below, and for historical records, I'm keeping the link to Twitter where original quote can be found.
is appropriate for a family friendly technical forum.
The original poster probably just meant that learning to program in Rust can seem to be an exercise in masochism.
i never knew the compiler was a furry
@cyber in the community discord
In response to What to say to a C programmer when they say
@ZiCog: Does anyone have a 'no holds barred, unsafe or not' solution to the problem in Rust that can match C?
@kornel: Pipe the C version through c2rust
@ZiCog: Yay! Rust now beats both Clang and GCC!
Generic types describe ranges of types, just like types describe ranges of values, and traits are to generic types what properties are to structs. So a new trait actually defines a new type of types, and can be combined with other traits to form a hierarchy of traits.
14 posts were split to a new topic: Traits as types of types
But I know one thing: I certainly wouldn't implement a new version control tool in Python 3 and I would probably choose Rust as an implementation language for most new projects in the systems level space or with an expected shelf life of 10+ years