Rust 找不到[build dependencies]部分中列出的板条箱

Rust 找不到[build dependencies]部分中列出的板条箱,rust,rust-cargo,Rust,Rust Cargo,我尝试使用命令cargo build编译我的项目 build.rs extern crate csv; use std::path::Path; use std::fs::OpenOptions; use std::io::BufWriter; use std::io::Write; #[allow(non_snake_case)] fn processCSV(filename: &str, sourcePath: &str, enumName: &str) {

我尝试使用命令
cargo build
编译我的项目

build.rs

extern crate csv;

use std::path::Path;
use std::fs::OpenOptions;
use std::io::BufWriter;
use std::io::Write;

#[allow(non_snake_case)]
fn processCSV(filename: &str, sourcePath: &str, enumName: &str) {
    println!("Generate rust source code from schema {}",filename);

    let mut ret: Vec<String> = Vec::new();
    let mut rdr = csv::Reader::from_file(filename).unwrap().flexible(true);
    for record in rdr.records().map(|r| r.unwrap()) {
    }
    let path = Path::new(sourcePath);
    let file = match OpenOptions::new().write(true).create(true).open(&path) {
        Ok(file) => file,
        Err(..) => panic!("Cannot create file {}",path.display()),
    };
    let mut writer = BufWriter::new(file);

    writer.write_all(b"test\n");
}

fn main() {
    processCSV("../schemas/Test.csv", "./src/mod/common/StatusCode.rs", "StatusCode");
}
我可以看到这个错误:

src/lib.rs:1:1:18错误:找不到
csv

src/lib.rs:1个外部板条箱csv

但是当我将
flexible(true)
更改为
flexible(false)
时,它编译得很好,没有任何错误。我需要做什么来解决这个问题

我正在Windows 7 64位上使用Rust 1.2.0。

更改
灵活(错误)
灵活(正确)
对我来说没有任何区别;两者都失败了。问题是您出于某种原因选择了
构建依赖项
,而不仅仅是
依赖项

使用您在回答中提供的src/lib.rs文件,以及这个Cargo.toml文件:

[package]
name = "stack-overflow"
version = "0.1.0"
authors = ["A. Developer <a.developer@example.com>"]

[dependencies]
csv = "*"
[软件包]
name=“堆栈溢出”
version=“0.1.0”
作者=[“A.开发者”]
[依赖关系]
csv=“*”
它编译得很好


如果您需要访问build.rs和项目中的依赖项,则需要在这两个部分中都包含该依赖项。

构建依赖项是的依赖项,它是在构建主机箱之前编译并运行的辅助程序二进制文件(设计用于代码生成、构建/查找本机C库等)

主代码使用的普通依赖项应该只属于“依赖项”部分,例如

[dependencies]
csv = "0.14"
还有一个“dev dependencies”部分,它是仅用于测试的依赖项,即它们被编译并仅用于
货物测试
。这允许板条箱依赖于,例如,运行测试而不污染主要工件

总之,运行
cargo build
将执行以下操作:

  • 生成任何
    生成依赖项
  • 构建构建脚本(将编译器指向构建的构建依赖项),并运行它
  • 构建任何
    依赖项
  • 构建主板条箱(将编译器指向构建的依赖项)
  • 运行
    货物测试
    添加:

  • 构建任何
    dev依赖项
  • 使用
    --test
    构建主板条箱,为任何源代码中的
    #[test]
    创建测试运行程序(将编译器指向依赖项和开发人员依赖项)
  • 构建任何外部示例或测试,同时指向依赖项和开发人员依赖项

  • 您使用的是哪一个版本?这似乎是您的问题:我尝试过1.2.0和1.3.0-beta.3(2a89bb6ba 2015-08-11)@OleksandrKravchuk:csv::Reader的
    flexible
    功能与灵活的目标规范有什么关系?错误是针对
    src/lib.rs
    报告的,但我们只看到
    build.rs
    的源代码。我相信@Shepmaster的答案是正确的。感谢线程!在一个小问题上帮助了我一点。顺便说一句,请查看walkdir板条箱。我没有正确描述我的问题,我忘了提到我对build.rs文件有问题。因此我假设“build dependecies”应该用于此案例。我还尝试将“csv”复制到“dependecies”中,是的,它可以工作。但我认为它不正确,并且在cargo(或rust compiler)中如何解决依赖关系时出现一些错误。@build.rs文件现在有问题-但错误消息是
    src/lib.rs[…]找不到csv的板条箱
    。这就是为什么我假设您显示的代码是
    src/lib.rs
    的内容。您的问题仍然没有实际显示
    src/lib.rs
    ,但请参阅我编辑的答案的最后一句进行猜测。我已编辑我的问题,请参阅我对Shepmaster答案的评论。
    [dependencies]
    csv = "0.14"