This was not some quick rushed decision like you claim. It is the culmination of an incredible amount of time, thought, and hard work.
If you are worried about a lack of experience with .await, then please go to this thread and share your experience (as others have already done). But you need to do it before .await reaches beta (in about 5 weeks).
That's their choice. But I wasn't talking to you, I was talking to leaxoy, who clearly prefers prefix.
This doesn't practically work when there's more than one developer. Because reasonable teams use imperfect official syntax instead of introducing own bicycles.
Discussion, yes. I was talking specifically about the implementation. You can discuss syntax for years, but you can "feel it" only when you try it in real projects with real examples.
Real code is very different from toy examples:
real examples show how important is chaining (one of the largest arguments for the current syntax)
real examples use long function names
real examples are not tailored specifically for arguments
Three weeks was not enough for that.
Half of Rust language is syntax sugar (e. g. ? operator). That's fine.
lazy_static removes boilerplate.
wait!() removes nothing, just introduces complexity in the presence of stable .await.
Most features (except trivial) stabilized after several months after implementation. I think stabilizing a macro (or macro-like syntax) and waiting several months to stabilize underlying syntax would be ideal.
The macro syntax, as well as postponing of the syntax decision, has already been very carefully considered, many times, and ultimately rejected.
.await was chosen as the final syntax (see blog posts and their discussions for reasons why).
Temporary await!() has been rejected to avoid fragmentation of syntaxes and to avoid potential migration later. Weâve had precedent with try!() -> ?. Many projects didnât update, because they didnât want to do the work, didnât want cause merge-conflict-causing syntax churn. Some people donât like the new syntax so they will use the old one forever, causing fragmentation.
If it turns out that (during real world experiments) there are significant issues with .await, then they will seriously consider that.
They don't just ignore feedback. There's been many cases in the past where they have changed their mind. That's why they specifically made a thread asking for real world experience. You seem to have a very negative view of the Rust team, which I think is not deserved at all.
But you're clearly not interested in listening, so I'm not going to continue this conversation.
Things get re-considered when thereâs new information presented. âI donât like itâ, âI like the macro syntaxâ are not a new information at this point (i.e. people already voiced these opinions and they have been included in making the current decision).
Significant issues is a vague term. Any syntax works. Even no await works.
If new syntax would reveal the safety violation, they will obviously reconsider. But if it will just make code harder to read, it would be too late to stop that train.
As I said, only three weeks.
I think I'm listening, but anyway I'm sorry for wasting your time.
For feedback on real projects, not speculations. A possible outcome could be:
people who prefer .await could find it actually not as good as they thought
people who don't like .await could decide that it is not too bad after all
Currently, projects don't use any async/await because it's not stable, and stable rust is a hard requirement for lots of projects.
And converting an experimental branch project to async/await is a large amount of non-automatable work people rarely can afford.
If the macro was stable, people could start actually using macro await, and at the same time can "try" experimental nightly syntax with a simple script which converts macros to any syntax.
We waited for async/await for years, waiting for a couple of releases longer wouldn't hurt
This is a falsehood perpetuated by the layers and layers of hacks for the temporaryawait! on nightly.
await!cannot be a macro. This has nothing to do with code expansions or stability promises. It's because await is a keyword.
If await! were to be available on stable, it would be as a new kind of syntactical structure. The language team decided that the best option was "dot keyword" rather than any of the other options, including "keyword bang mandatory delimiters".