Should be later this year.
> and someone could write an in depth and well structured book on it.
Give me some time. ;)
Question: are there any moderate-sized codebases (ie not Servo, not Rust itself) that can be used to show idiomatic Rust? In my own experimentation (a simple image utility to resize images and convert to b&w), I ended up writing it a lot like I would C, which I know isn't correct based on snippets I've seen. Or rather, it's correct in that it works, but it's not particularly idiomatic and the Rust elite would sneer at me.
It's like the early days of C++ when people were writing it as "C with classes", complete with pointers everywhere, malloc, etc. A lot of that could have been mitigated with some easily digestible source that clearly demonstrates the idioms. Maybe a small game, a simple text editor, etc.? Does anyone know of anything like this? Or is it too soon for this?
I am not entirely sure that 'idiomatic Rust' is something that's fully figured out yet. Rust itself is _certainly_ not idiomatic, as it's a hodge-podge of several historical coding styles.
As I said when I spoke at the Bay Area Meetup, my position in Rust is 'eternal newbie,' so I'm not actually the best one to ask here. Maybe pcwalton can chime in.
OMFG..and in this day and age is soooooo much more important not to be sneered at by the "elite" then it is to have working code...
man do i miss the days when programming was about getting stuff working not worrying about the political and social impact of how your style was...
EDIT: not always, of course, but unless it's a one-off tool, it doesn't make a lot of sense to NOT be idiomatic.
As you know, Real Programmers can write FORTRAN in any language.
But, do we want to?
No, we want to learn what is new and useful in a new language. We want to learn how to make best use of that language.
That doesn't mean writing code that looks just like the language we used before. What would be the point of using a new language, then?
No one cares what the "Rust elite" think. Didn't you see that that was just a humorous throwaway comment following a much more important point: writing idiomatic code.
Learning to write idiomatic code helps us see what is new and useful in any language.
We won't learn that by writing FORTRAN in the new language.
But seeing how experienced users write their code is a great way to see what is good and interesting about the language.
Go kind of wanted that prize. It didn't quite get it.
Many will say how they care about cool features, built-in concurrency, nice stuff and in the end, when comes to releasing product if performance isn't there, it won't replace C++.
Some program in C++ because they love the language. They really do. There are people like that, I've met one, once. Quite often others do it because the rest of their world does (libraries, coworkers) and performance.
The niche were performance matters (and I understand that is a loaded word so to speak) is going to be hard to get into.
How was a garbage collection language ever supposed to take the place of a manual memory management language? The area that C++ shines in is systems programming, and you can't do that with Go, because of garbage collection. Rust on the other hand, is precisely made for systems programming.
That is simply not the case. Rob Pike himself describes how we was working on a large C++ application when he thought of creating Go:
http://commandcenter.blogspot.com/2012/06/less-is-exponentia...
I like C++ personally for its power and keeping performance accessible (especially with new developments of C++11 and beyond). And looking at new alternatives, Rust looks more like a successor to me than Go. As others pointed out, Rust doesn't enforce garbage collection, while Go does. For example if someone would want to write a demanding game, they wouldn't do it with garbage collection enforced language.
That's why Rust is about zero-cost abstractions, period. Unlike almost every other new language (for example, Go), we don't accept abstractions that compromise performance.
This is an article about Servo. We care about performance for Servo—along with safety, performance is Servo's entire raison d'être. Much of the focus on performance in Rust is motivated by the desire to build an engine that's faster—not just "as fast as" or "within the ballpark of", faster—than the existing C++ engines.