我正在研究 rust 编程语言,我试图找到一个权威的发布标准(或者至少一个功能类似的文档),比如ECMA标准或C++标准或类似的东西,它定义了语言的语法和库.

这样的事情还存在吗?还是仍在进行中?

如果它不存在,最接近的资源是什么?

推荐答案

Initial January 2014 response, more than a year before Rust 1.0:

不,目前还没有关于 rust 蚀的正式规范.当语言进一步稳定时,它就会到来.

大多数事情都有正式的语法,但其中一些是错误的和过时的.Rust reference manual是最接近你想要的.(代码是最正确的规范.)

不要担心这种情况在future 几个月会有所改善.


September 2020 update:

在我第一次写下这个答案的时候,大多数人都认为Rust 1.0会给出一个粗略的规范——无论如何都不是正式的,或者听起来不是正式的,而是某种形式的规范.情况did有所改善,并在继续改善(参考手册不应再错误或过时,尽管它肯定仍然不完整),但并不像提问者和其他人所希望的那样.

因为在某个时候,社区作为一个整体意识到,在短期内,没有人想(或者可以证明)投入努力来制定一个彻底的非正式规范,而制定一个正式规范实际上是一个非常深入的研究领域,因为我们不想将临时实现形式化,而是先创建一个声音模型(然后调整编译器以匹配该模型).

所以优先级发生了变化,rustc开发人员不打算自己制定任何规范,而只是帮助其他想要实现的人.我认为人们通常预期它最终会发生,但只会最终发生,不会很快发生.

但也有进展:拉尔夫·荣格刚刚获得博士学位,他的论文名为Understanding and Evolving the Rust Programming Language,其中"提出了两个项目,为 rust 病奠定了第一个正式的基础".

Rust相关问答推荐

as操作符如何将enum转换为int?

如何从Rust记录WASM堆内存使用情况?

交叉术语未正确清除屏幕

为什么类型需要在这个代码中手动指定,在rust?

为什么std repeat trait绑定在impl块和关联函数之间?

如何导入crate-type=[";cdylib;]库?

更合理的方法来设计样条线函数器?

是否提供Bundle 在可执行文件中的warp中的静态文件?

Rust proc_macro 和 syn:解析空格

仅在使用 &mut 或线程时borrow 的数据在闭包之外转义?

sha256 摘要仅适用于 &*

以 `static` 为前缀的闭包是什么意思?我什么时候使用它?

Rust 引用元组和引用元组

使用部分键从 Hashmap 中检索值

我如何将特征作为 struct 的拥有字段?

为什么 no_std crate 可以依赖于使用 std 的 crate?

在 Rust 中获得准确时间的正确方法?

带有库+多个二进制文件的Cargo 项目,二进制文件由多个文件组成?

在 Rust 中有条件地导入?

C++ 中的 CRTP 是一种表达其他语言中特征和/或 ADT 的方法吗?