问题标签 [rust-2018]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rust - 如何在 Rust 2018 中为 crate 起别名?
我有一个板条箱foo_sys
。在 Rust 2015 中,我使用它extern crate foo_sys as foo
是为了方便,但在 Rust 2018extern crate
中不再需要,我不想仅将它用于别名。下降时extern crate
,我得到
错误[E0463] : 找不到板条箱
foo
rust - 如何在不使用 extern crate 的情况下导入 Rust 2018 中的所有宏、派生和过程宏?
我正在试验Rust Edition 2018。在 Rust 2015 中,您使用
用于导入宏。在 Rust 2018extern crate
中可能是单调的。有没有办法从板条箱中导入所有宏而不使用extern crate
?对于简单的宏,在模块中导入就可以了,但复杂的宏依赖于其他几个宏,这很不方便。
rust - 除了新关键字之外,原始标识符的用例是什么?
与 Rust 2018 一样,我们现在拥有原始标识符:
出于几个原因,此功能很有用,但主要动机是跨版本情况。例如,
try
不是 2015 年版中的关键字,而是 2018 年版中的关键字。因此,如果您有一个用 Rust 2015 编写的库并且有一个try
函数,要在 Rust 2018 中调用它,您将需要使用原始标识符。
除了上面所说的,还有其他的好处吗?是否有计划使关键字与上下文相关,例如您可以type
用作变量的标识符?为什么我应该使用一种神秘的语法,比如r#type
代替ty
或其他东西?
rust - 在构建脚本中获取当前版本的方法?
是否可以在构建脚本中读取当前使用的 Rust 版本?也许通过环境变量?
我试过EDITION
and CARGO_EDITION
,但没有用。我也没有找到任何关于此的文档。
module - 在 Rust 2018 中使用模块时,如何解决错误“根目录中没有模块”?
我正在开发一个项目,该项目使用src/
. 我目前正在使用 Rust 2018 版,其中一项主要更改是处理 imports/ use
statements。
我的模块代码一切正常,但是当我开始将它放在一起用于整个项目时,我开始收到此错误:
目前,我的代码设置如下:
词法分析器/lexer.rs
词法分析器/mod.rs
main.rs
我试图通过将语句更改use lexer
为 asuse self::lexer
并添加来解决此问题extern crate lexer
(这显然不起作用,但到底是什么,我想我会尝试一下)。然而,这些都没有奏效。
我能做些什么来解决这个no 'lexer' in the root
错误?
module - use 关键字中的有效路径根是什么?
随着 2018 年版模块系统的改进,use
关键字的功能发生了变化。可以在use
关键字之后使用的有效路径是什么?
rust - 为什么我的特征定义与 2015 版一起编译,但与 2018 版不兼容?
我写了这个简单的程序:
我编译了这个rustc --edition=2018 main.rs
并收到错误消息:
编译通过rustc --edition=2015 main.rs
orrustc main.rs
不会导致此错误,尽管有一些警告。
这段代码有什么问题?
rust - 如何在 Rust 中执行要求输入的命令
我正在使用 Rust-2018 构建一个 CLI。它是一种旧命令的包装器。我需要在我的 Rust 程序中调用该命令,但问题是该命令要求输入(密码)来执行任务。
就像 keytool 何时需要生成密钥对并提示您输入密码一样。
我希望被调用的程序执行他的所有流程,并且只知道程序是否成功结束。
这是我迄今为止尝试过的,但它没有按预期工作。
谢谢你的帮助!
rust - 围绕异步和流的生命周期
我正在尝试制作一个在连续失败Stream
时消耗并截断它的函数。max_consecutive_fails
然而,事情并不顺利(E0495)。我将Stream
s 更改为Iterator
s (并删除了async
s),它很有效。为什么会这样?我怎样才能重构这段代码(工作)?
下面是我试图指出问题所在的最小化示例,但我仍然无法理解 rustc 错误消息。