问题标签 [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 回答
214 浏览

dependencies - 如果相关功能被禁用,如何跳过依赖项

假设我有一个仅在启用glob时才依赖于该板条箱的板条箱。#[cfg(feature = "glob")]此外,默认情况下禁用此功能。如何glob默认跳过下载和编译 crate?

和源代码:

0 投票
1 回答
765 浏览

rust - 从多个非根二进制文件导入非根模块

我正在学习 Rust,并决定编写一个简单的客户端/服务器程序。客户端和服务器都将使用我已经编写的一个非常简单的模块。知道这段代码可能会增长,为了清楚起见,我决定划分我的源代码。现在我当前的层次结构如下所示:

我在 Stack Overflow 和网络上找到的 许多示例都为项目根目录中的情况提供了很好的示例。main.rs不幸的是,我正在尝试做一些不同的事情,如上所示。

communicate.rs包含我编写的所有网络代码。最终我会在这里添加其他 Rust 文件并将它们的public mod语句包含在mod.rs. 目前common/mod.rs我只有 pub mod communicate;

只关注client文件夹,我所拥有的一切main.rs如图所示。文件“标题”列出

除了基本[package]部分,我所拥有的Cargo.toml只有

当我尝试构建客户端二进制文件时,编译器抱怨common找不到 crate。

我认为这是因为它正在文件夹中寻找一个通用的板条箱client/。当我尝试使用mod语句而不是extern crate语句时,我遇到了同样的问题。

给我:

我还尝试(使用)在其内容中extern crate...添加 a ,但我仍然得到与第一个相同的错误。lib.rsclientpub mod common;

我发现一个潜在的解决方案可以像这个项目一样对其进行建模,但这需要Cargo.toml在每个文件夹中都有一个,这是我想避免的。

我觉得我很亲近,但我错过了一些东西。

0 投票
2 回答
172 浏览

rust - 最终用户实用程序/应用程序是否应该在 crates.io 上注册?

crates.io上注册一般有用的(实用程序/应用程序)是否可以接受?

FAQ没有解决这个问题,并且通过浏览,有最终用户应用程序的示例(主要是命令行工具)。

还是 crates.io?仅适用于图书馆?


我问这个是因为文档提示了库的使用、API 的语义版本控制等,但没有明确引用打包应用程序的案例。

0 投票
1 回答
1263 浏览

operating-system - Crate 的 Cargo.toml 操作系统依赖

我有一个 rust 项目,其中包含mysql -crate 依赖项,我想让它独立于操作系统。

所以我尝试了:Cargo.toml

错误已经发生在一个最小的 main: src/main.rs

但是构建失败。在 macos/unix 上,它总是想编译管道并得到一个未解决的导入:

对于 mysql crate 本身,在 Windows 上也会发生同样的情况:

所以我的问题是,在这种情况下我如何处理操作系统依赖关系?

0 投票
1 回答
17118 浏览

module - 如何在 crate 中将 Rust 项目设为公开,但在其外部设为私有?

我有一个有很多代码的板条箱,所以我把它分成了多个文件/模块。但是,有些模块有内部不安全的东西(例如原始指针),我需要将它们公开给不同的模块,但我不想暴露给我的 crate 的用户。我怎样才能做到这一点?

我能想到的唯一方法是实际上让我的板条箱只是一个大模块,但是没有办法将它分成不同的文件,除了这个似乎有点hacky的解决方案。

通常,当我遇到 Rust 文档中的简单示例无法充分解释的现实世界问题时,我只是复制一个流行的现实世界 crate,例如git2-rs,但这似乎有效地公开了所有内容,包括原始指针。

0 投票
1 回答
998 浏览

rust - 如何使用“货物猛拉”?

我发布了我的 crate,然后意识到我忘记在我的README.md. 我已经将该细节包含在 README.md并做git commitpush。如何在不更改版本的情况下更新我的板条箱?

文档crates.io

cargo yank

有时可能会出现您发布的 crate 版本实际上最终由于某种原因(语法错误、忘记包含文件等)而被破坏的情况。对于这样的情况,Cargo 支持yank一个 crate 版本。

我不明白如何使用它。为什么有 2 个命令:一个有另一个没有--undo?我应该同时运行它们吗?还是只有一个?哪个?

我应该crate package && crate publish在那之后跑吗?还是只有cargo yank ...?这会自动更新我的箱子吗?

0 投票
2 回答
615 浏览

rust - 使用 Xargo 从特定源编译 `core`

基于此评论,应该可以使用 Xargo 来管理core特定目标的自定义 crate 的安装。我已经尝试了以下方法来让它与一个没有其他依赖关系的板条箱一起工作,除了core

Cargo.toml: 没有列出依赖项

Xargo.toml:我列出的具体来源core

但是,构建 viaxargo build失败,就好像我只是在使用cargo

请注意,没有任何迹象表明甚至尝试过 Git 流量。

相反,cargo如果我将core = { git = ...}行放入Cargo.toml而不是Xargo.toml,这是 vanilla 的输出,它按预期工作:

0 投票
1 回答
93 浏览

rust - 为什么即使我的 Cargo.toml 中有 openssl 0.7.14,solicit 0.4.4 仍会尝试使用 openssl 0.9.12?

我有一个使用 Solicit 示例通过 HTTPS 发出请求的简单项目。我的 Cargo.toml 有:

当我尝试运行cargo build时,错误是:

为什么是 0.9.12 而不是 0.7.14?

0 投票
0 回答
24 浏览

rust - 未考虑来自 RustCrypto 的 BlockCipherVarKey 特征的方法

我正在尝试使用 RustCrypto 来实例化河豚对象。该new方法由block-cipher-trait crate 中的 traitBlockCipherVarKey实现。

这是我的最小示例:

具有以下内容Cargo.toml

我尝试构建它,但出现以下错误:

为什么use block_cipher_trait::BlockCipherVarKey不考虑在线2?为什么编译器建议我添加它,尽管它已经在这里了?

0 投票
1 回答
50 浏览

macros - 如何在宏中包含唯一匹配案例的文档?

可以为导出的宏的单个匹配案例编写文档。

是这样的可能还是我必须这样做: