问题标签 [rust-crates]

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.

0 投票
1 回答
2517 浏览

import - 第三方库上的 Rust `unresolved import`。新手问题

我想使用名为 warp 的第三方库编译一个简单的 rust 程序:

src/main.rs

当我运行时,cargo build我看到它下载了 warp 和许多传递依赖项,然后我得到了错误:

我浏览了关于模块和板条箱的各种文档。在这个简单的场景中我做错了什么?

0 投票
1 回答
185 浏览

import - How to reuse code from the main bin in another bin?

My project structure looks like this:

#xA;

(code: https://gitlab.com/msrd0/cargo-bin-import)

In my other.rs, I'm trying to reuse code from the util mod, which is declared as a public mod in my main.rs file. I tried the following:

  • use util::do_sth
  • use crate::util::do_sth
  • use cargo_bin_import::util::do_sth (with and without extern crate)
  • mod util; use util::do_sth
  • extern crate util; use util::do_sth (suggested by rustc)

None of the above worked and gave me error messages similar to this one:

#xA;
0 投票
1 回答
258 浏览

rust - 为动态加载的 crate 提供一致的 TypeId

我有一个插件系统,我在其中传递&dyn Any给动态加载的 rust 函数,但向下转换引用失败,因为TypeIds 不同(对于相同类型),尽管我添加rustflags = ["-Cmetadata=12345678"]到两个 crate 的货物配置中。此外,似乎只有来自外部板条箱的类型受到影响(我尝试过(),它在两个板条箱中都产生了相同的结果TypeId)。我目前正在使用原始指针 ( unsafe { &*(v as *const dyn Any as *const Type) }) 来解决这个问题,但我更喜欢没有不安全代码的解决方案。

例如下面的代码:

产生这个输出:

编辑:这似乎不是不同依赖版本的问题,因为板条箱 2(它是动态加载的)取决于板条箱 3(它也是动态加载的)并且问题仍然存在,尽管板条箱 2 和板条箱 3,是本地依赖项(因此只有一个版本)。板条箱 1 是顺便说一句。装载板条箱 2 和 3 的板条箱。

编辑:我-Cmetadata从所有 3 个 crate 中删除了该选项,现在我得到了相同TypeIdtoml::Value,但是TypeId我想在 crate 2 中向下转换的 crate 1 中的类型仍然不同。

0 投票
1 回答
2515 浏览

rust - 为什么 clap 添加到 Cargo.toml 时编译失败?

概括

我对 Rust 相当陌生,并决定使用它来将现有项目移植到其中。我打算用来clap处理 CLI 选项,但我不断收到错误。

我需要做什么才能clap正确安装,以便它可以在我的项目中作为依赖项使用(例如extern crate clap; [...] use clap::App; [...]

我在使用其他箱子时没有遇到问题(到目前为止),所以我不确定这里有什么不同,或者箱子本身是否有问题。

我已经看到了一些问题(例如这个),它只是建议将依赖项添加到.toml文件中,或者似乎没有为我所看到的提供解决方案。

我在 Ubuntu Linux 中,如果这有什么不同的话。

我试过的

添加clap = "2.33.0"到我的Cargo.toml文件(参见https://crates.io/crates/clap)会导致 VSCode(通过 RLS)记录以下内容:

根据clap repo本身的自述文件,只需添加它就可以了:

要完全使用,请在您的 Cargo.toml 中添加 clap 作为依赖项,以便从 crates.io 使用:

但事实并非如此。

我已经尝试过使用和不使用~前缀以及clap = {version = "2.33", features = ["yaml"]},这也显示在 repo 中,但没有运气。(是的,我正在尝试从.yaml文件加载 CLI 选项。)

从 shell 中尝试cargo install clap --version 2.33.0只会返回一条错误消息:error: specified package has no binaries.

直接针对 Git 存储库也会产生相同的错误消息:

v2.33.0请注意, Git 存储库中没有标签(在撰写本文时)。


如果您知道如何让 VSCode 停止将所有内容标记为错误,那么您将获得奖励:

VSCode 将所有内容标记为错误

0 投票
1 回答
5349 浏览

rust - 从带有 main.rs 文件的本地 crate 导入时未解决的导入

我在我的程序中包含了一个库作为子模块。结构如下所示:

在我的程序Cargo.toml文件中,我在这个答案之后添加了依赖项:

但是我不能在我的程序中使用这个库,我对 Rust 有点陌生,这个导入系统让我很困惑。我试过这个main.rs

但我得到一个unresolved import 'my_lib'错误。

0 投票
0 回答
57 浏览

rust - 货物安装异步标准失败

当在具有最新 rust 1.39 的 Windows 上运行“cargo install async-std”时,我收到以下错误消息:

错误:指定的包“async-std v1.0.1”没有二进制文件

我该如何解决这个问题?

0 投票
3 回答
3087 浏览

module - 如何访问main.rs中的函数,该函数已写入同一包中rust的不同目录中的文件中

我想在 main.rs 文件中调用一个函数。我在与 main.rs 相同的 src 文件夹中创建了一个目录名称“库”。

src/main.rs

src/库/file.rs

当我在 main.rs 中调用这个函数名时,编译器会抛出一个错误:

错误[E0583]:找不到模块库的文件

我想我错过了一些东西。这样做的正确方法是什么?请记住,库目录只是一个普通目录而不是货物包

0 投票
1 回答
78 浏览

api - 我正在尝试通过 Rust 中的 OpenWeather API 获取数据,但我想我在解析方面遇到了一些问题

错误:线程'main'在'调用Result::unwrap()一个 Err值时惊慌失措:ErrorReport { cod:0,消息:“得到意外响应:\”{\\“coord\\”:{\\“lon\\”:67.03,\ \"lat\\":24.87},\\"weather\\":[{\\"id\\":803,\\"main\\":\\"Clouds\\",\\"说明\\":\\"破云\\",\\"图标\\":\\"04n\\"}],\\"基地\\":\\"车站\\",\\" main\\":{\\"temp\\":294.15,\\"压力\\":1018,\\"湿度\\":60,\\"temp_min\\":294.15,\\"temp_max \\":294.15},\\"能见度\\":6000,\\"风\\":{\\"速度\\":5.1,\\"度数\\":30},\\"云\\":{\\"所有\\":70},\\"dt\\":1574012543,\\"sys\\":{\\"type\\":1,\\"id\\":7576,\\"country\\":\\"PK\\",\\"sunrise\\": 1573955364,\\"日落\\":1573994659},\\"时区\\":18000,\\"id\\":1174872,\\"姓名\\":\\"卡拉奇\\",\ \"鳕鱼\\":200}\"" }

0 投票
1 回答
327 浏览

rust - 如何使用活塞创建全屏窗口?

我试图创建一个使用活塞板条箱打开全屏窗口的应用程序。

如何以编程方式检索以像素为单位的物理屏幕尺寸?这似乎是一件容易的事,但我无法弄清楚。

0 投票
2 回答
3198 浏览

random - 如何使用 Rust 中的 rand crate 输入整数种子以生成随机数?

在一个 Rust 项目中,我想根据我在 Java 中习惯的整数种子生成可重现的随机数。

包装箱Seed中的文档说明:rand

种子类型,仅限于可可变解引用为 u8 数组的类型(对于某些 N,我们建议使用 [u8; N])。

这是否意味着整数种子是不可能的?如果可能的话,我如何使用StdRng完整的种子?