标签: rust-crates

如何解决货物中"多包装箱"的问题?

运行时cargo build:

error: multiple matching crates for `url`
Run Code Online (Sandbox Code Playgroud)

然后列出候选人:

  • ./target/deps/liburl-11a95471847b9e04.rlib
  • /usr/local/lib/rustlib/x86_64-unknown-linux-gnu/lib/liburl-4e7c5e5c.{so,rlib}

......然后中止,因为它无法决定哪一个.

src/http/lib.rs:18:1: 18:18 error: can't find crate for `url`
src/http/lib.rs:18 extern crate url;
                   ^~~~~~~~~~~~~~~~~
error: aborting due to 2 previous errors
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题,或解决这个问题?


注意:

问题 和此提交 似乎与问题相关,来自评论:

+//! rust-url’s crate is also named `url`.
+//! Cargo will automatically resolve the name conflict,
+//! but that means that you can not also use the old `url` in the same crate.
Run Code Online (Sandbox Code Playgroud)

安装细节:

$ rustc -v
rustc 0.12.0-pre-nightly (7a25cf3f3 …
Run Code Online (Sandbox Code Playgroud)

rust rust-crates rust-cargo

10
推荐指数
1
解决办法
2681
查看次数

如何判断每个板条箱有哪些“功能”可用?

是否有一种标准方法可以确定给定板条箱可用的功能?

我正在尝试阅读 Postgres 时区,表示要使用 cratepostgres = "0.17.0-alpha.1"板条箱with-timewith-chrono功能。

当我在 Cargo.toml 中尝试此操作时:

[dependencies]
postgres = { version = "0.17.0-alpha.1", features = ["with-time"] }
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

[dependencies]
postgres = { version = "0.17.0-alpha.1", features = ["with-time"] }
Run Code Online (Sandbox Code Playgroud)

此外,postgres 0.17.0crate 页面没有说明这些功能,所以我什至不知道是否应该支持它们。

似乎docs.rs 上会有一些关于它的内容?

rust rust-crates rust-cargo

10
推荐指数
2
解决办法
1448
查看次数

如何防止Cargo将相同的依赖项与不同的功能合并?

找出相同代码的货物构建后:虚假的编译时错误?,我想知道如何防止这样的问题:

$ cargo new feature_merge
$ cargo add nmea
$ cargo check > /dev/null 2>&1 && echo "success"
success
$ cargo add cexpr
$ cargo check > /dev/null 2>&1 || echo "failed"
failed
$ cargo rm cexpr && cargo check > /dev/null 2>&1 && echo "success"
success
Run Code Online (Sandbox Code Playgroud)

我删除/添加依赖项而不进行任何代码修改,这会影响构建结果.

正如我所描述的那样,问题的根源是cexpr依赖于这样的nom:

nom = {version = "^3", features = ["verbose-errors"] }
Run Code Online (Sandbox Code Playgroud)

nmea描述了这样的依赖:

nom = "3.1.0"
Run Code Online (Sandbox Code Playgroud)

只有nmea作为依赖,Cargo使用一组功能构建nom,而Cargo使用另一组功能构建cexpr和nmea.

我想要一种方法来防止我维护的nmea箱子的错误使用.

我想像编译时错误一样"`nom` compiled with wrong features",或强迫Cargo构建两个nom变种.

我试过这样的事nmea/Cargo.toml …

rust rust-crates rust-cargo

9
推荐指数
1
解决办法
131
查看次数

从带有 main.rs 文件的本地包导入时未解决导入问题

我已将库作为子模块包含在我的程序中。结构如下:

\n\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 my_lib/\n     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src/\n          \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib/\n               \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 mod.rs\n               \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 foo.rs\n          \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.rs\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src/\n     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.rs\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n
Run Code Online (Sandbox Code Playgroud)\n\n

在我的程序Cargo.toml文件中,我添加了以下答案的依赖项:

\n\n
[dependencies]\nmy_lib = { path = "./my_lib" }\n
Run Code Online (Sandbox Code Playgroud)\n\n

然而我无法在我的程序中使用这个库,我对 Rust 有点陌生,这个导入系统让我感到非常困惑。我已经尝试过这个main.rs

\n\n
[dependencies]\nmy_lib = { path = "./my_lib" }\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我收到unresolved import \'my_lib\'错误。

\n

rust rust-crates rust-cargo

9
推荐指数
1
解决办法
2万
查看次数

如何将 Rust 程序拆分为多个文件?

我正在尝试一些 Rust,但我的程序变得有点长。我现在想将我的程序分成许多文件 - 我如何最轻松地做到这一点?

当我尝试用 Google 搜索时,我得到的 Rust 书籍章节有很多关于包、板条箱和模块的页面,而且似乎永远没有说到重点——难道没有更简单的方法来做到这一点吗?

module file rust rust-crates

8
推荐指数
1
解决办法
3886
查看次数

我可以在多个文件中拆分包,而不为每个文件引入模块吗?

所有的例子,我发现创建一个lib.rs,然后将该文件中创建mod foo;,mod bar;为每个文件foo.rs,bar.rs等等.

基本上我想要的是将我的箱子分成多个文件,但不必为每个文件引入大量模块.Rust不可能做到这一点吗?

namespaces module rust rust-crates

7
推荐指数
1
解决办法
371
查看次数

找不到`num`的箱子

我正在尝试使用Rust中num crate的BigUints,我正在使用此代码导入它们:

extern crate num;

use num::bigint::BigUint;
Run Code Online (Sandbox Code Playgroud)

但是,它在编译时返回以下错误:

main.rs:1:1: 1:18 error: can't find crate for `num`
main.rs:1 extern crate num;
      ^~~~~~~~~~~~~~~~~
error: aborting due to previous error
Run Code Online (Sandbox Code Playgroud)

我没有使用任何编译器标志.

我究竟做错了什么?

import rust rust-crates

7
推荐指数
1
解决办法
3250
查看次数

究竟什么是货物生态系统中的"箱子"以及与crates.io相关的映射是什么?

我对crates.io上托管的确切事物感到有点困惑(这是一个'crate'正确引用它们的方式)?我的理解是一个crate是Rust中的一个编译单元,但是crates和crates.io之间的映射是什么?例如,宏上的Rust编程语言附录说,因为每个箱子只能有一个程序宏:

我们的两个箱子紧密相关,因此我们在箱子的目录中创建程序宏hello_macro箱.如果我们改变了特征定义hello_macro,我们也必须改变过程宏的实现hello_macro_derive.这两个板条箱需要单独发布,使用这些板条箱的程序员需要将它们作为依赖项添加,并将它们都纳入范围.我们可以将hello_macro crate hello_macro_derive用作依赖项并重新导出过程宏代码.但是我们构建项目的方式使得程序员hello_macro即使不想要这些derive功能也可以使用.

它必须在crates.io上单独发布.这看起来非常清楚:crates.io上的箱子与本地箱子相同,并且映射是一对一的.

但是,在讨论具有可执行文件和库的项目时,它意味着它们是单独的包,但不需要单独发布.例如,sccache repo有main.rs和lib.rs. 单独的二进制包是不是实际存储在crates.io上而只存在于repo中?那么货物安装如何确定安装什么?

什么是"套餐"?

我试图运行cargo package包含二进制和库目标的示例项目.并且两者都被添加到.cargo文件中(顺便说一下,.cargo档案的确切格式是在任何地方记录的吗?).这仍然让我感到困惑.我们可以将多个板条箱作为一个包的一部分发布吗?那么我们应该将crates.io中存储的内容称为吗?我是否正确地假设每个包可以包含多个二进制包,但只包含一个库包?这是我目前的理解.

rust rust-crates rust-cargo

7
推荐指数
1
解决办法
193
查看次数

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

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

对于文档Seedrand箱子状态:

种子类型,仅限于作为 u8 数组可变地取消引用的类型(我们推荐 [u8; N] 表示某些 N)。

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

random rust random-seed rust-crates

7
推荐指数
2
解决办法
2000
查看次数

Rust 柴油 orm 查询

我是生锈和柴油奥姆的新手。我正在尝试在我的查询中执行以下操作:

  • 数数
  • 选择
  • 命令
  • 限制

但我收到错误。
我正在使用 postgres 数据库。

我已在评论中的查询上方添加了确切的错误。
这是我的代码:

模式.rs

table! {
    employee (employee_id) {
        employee_id -> Int4,
        name -> Nullable<Text>,
        age -> Nullable<Int4>,
        address -> Nullable<Text>,
        email -> Nullable<Text>,
        dept_id -> Int4,
        salary -> Nullable<Numeric>,
        created_on -> Nullable<Timestamp>,
        created_by -> Nullable<Text>,
        modified_on -> Nullable<Timestamp>,
        modified_by -> Nullable<Text>,
        is_active -> Nullable<Bool>,
    }
}
Run Code Online (Sandbox Code Playgroud)

模型.rs

#![allow(unused)]
#![allow(clippy::all)]
use super::schema::employee;

use bigdecimal::BigDecimal;
use chrono::NaiveDateTime;

#[derive(Queryable, Debug, Identifiable)]
#[table_name = "employee"]
#[primary_key(employee_id)]
pub struct Employee {
    pub employee_id: i32,
    pub name: …
Run Code Online (Sandbox Code Playgroud)

rust rust-crates rust-cargo rust-diesel

7
推荐指数
1
解决办法
6282
查看次数