运行时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) 是否有一种标准方法可以确定给定板条箱可用的功能?
我正在尝试阅读 Postgres 时区,这表示要使用 cratepostgres = "0.17.0-alpha.1"板条箱with-time或with-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.0的crate 页面没有说明这些功能,所以我什至不知道是否应该支持它们。
似乎docs.rs 上会有一些关于它的内容?
找出相同代码的货物构建后:虚假的编译时错误?,我想知道如何防止这样的问题:
$ 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 …
我已将库作为子模块包含在我的程序中。结构如下:
\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\nRun Code Online (Sandbox Code Playgroud)\n\n在我的程序Cargo.toml文件中,我添加了以下答案的依赖项:
[dependencies]\nmy_lib = { path = "./my_lib" }\nRun Code Online (Sandbox Code Playgroud)\n\n然而我无法在我的程序中使用这个库,我对 Rust 有点陌生,这个导入系统让我感到非常困惑。我已经尝试过这个main.rs:
[dependencies]\nmy_lib = { path = "./my_lib" }\nRun Code Online (Sandbox Code Playgroud)\n\n但我收到unresolved import \'my_lib\'错误。
我正在尝试一些 Rust,但我的程序变得有点长。我现在想将我的程序分成许多文件 - 我如何最轻松地做到这一点?
当我尝试用 Google 搜索时,我得到的 Rust 书籍章节有很多关于包、板条箱和模块的页面,而且似乎永远没有说到重点——难道没有更简单的方法来做到这一点吗?
所有的例子,我发现创建一个lib.rs,然后将该文件中创建mod foo;,mod bar;为每个文件foo.rs,bar.rs等等.
基本上我想要的是将我的箱子分成多个文件,但不必为每个文件引入大量模块.Rust不可能做到这一点吗?
我正在尝试使用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)
我没有使用任何编译器标志.
我究竟做错了什么?
我对crates.io上托管的确切事物感到有点困惑(这是一个'crate'正确引用它们的方式)?我的理解是一个crate是Rust中的一个编译单元,但是crates和crates.io之间的映射是什么?例如,宏上的Rust编程语言附录说,因为每个箱子只能有一个程序宏:
我们的两个箱子紧密相关,因此我们在箱子的目录中创建程序宏
hello_macro箱.如果我们改变了特征定义hello_macro,我们也必须改变过程宏的实现hello_macro_derive.这两个板条箱需要单独发布,使用这些板条箱的程序员需要将它们作为依赖项添加,并将它们都纳入范围.我们可以将hello_macro cratehello_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 项目中,我想根据我在 Java 中习惯的整数种子生成可重现的随机数。
对于文档Seed的rand箱子状态:
种子类型,仅限于作为 u8 数组可变地取消引用的类型(我们推荐 [u8; N] 表示某些 N)。
这是否意味着不可能使用整数种子?如果可能,我如何使用StdRng完整的种子?
我是生锈和柴油奥姆的新手。我正在尝试在我的查询中执行以下操作:
但我收到错误。
我正在使用 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 ×10
rust-crates ×10
rust-cargo ×6
module ×2
file ×1
import ×1
namespaces ×1
random ×1
random-seed ×1
rust-diesel ×1