three different kinds of Rust Developers

There are actually three different kinds of Rust Developers:

The first group are the mindless enthusiasts. They will tell you that the birth of this programming language is aimed at serving the ultimate goal of humanity, which is the warp drive, enabling humans to achieve space jumps and time travel. Naturally, this kind of people has attracted the second group of people. Most of this second group may have only dabbled in Rust briefly and have only developed small-scale programs.

The emergence of the second group of people is largely due to the first group. They are the ones who mindlessly oppose Rust. When they see Rust evangelists, they will use sarcastic remarks. Gradually, the object of their aversion shifts from the people to Rust itself. Such people simply disdain to use Rust.

The third group of people are those who are truly trying to understand Rust, experiencing and feeling it. This group of people will compare Rust with the programming languages they have learned in the past. They may conclude that Rust is a language that is too cumbersome (when compared with Go and Java), or they may think that Rust is a language with a more scientific and standardized design (when compared with C/C++), but it has not reached the point where it can be a complete substitute. Only a small part of this group will actually use Rust, solve daily work problems, and voice their opinions on Zhihu. And they are easily misunderstood by the second group as being part of the first group.

Overall, at the present time, there are indeed not many opportunities to use Rust. This is determined by the characteristics of the business. Most companies are still struggling with how to quickly implement their business and turn it into profit.

I am in charge of the execution engine of a database product in a large company. In simple terms, it parses the QL language and translates and arranges it into interface operations of the storage engine. The part of parsing the QL language is a pure handwritten recursive descent. It was previously written in Go. The most complex query we encountered was a SELECT statement with a subquery nested six layers deep. It took about 7 milliseconds to parse it into an Abstract Syntax Tree (AST), including the logical processing of lexical analysis, syntax analysis, filtering, syntax exception checking, and AST generation. And a large number of small temporary memory objects were generated. The memory consumption was 40 megabytes. After rewriting this part of the module in Rust, the performance was improved to about 900 microseconds, and the memory consumption was reduced to 12 megabytes. The logic is a complete one-to-one replication of the recursive descent, without any additional optimizations. The difference between the two is quite obvious.