无法找到[build-dependencies]部分中列出的crate

now*_*ow2 4 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) {
    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");
}
Run Code Online (Sandbox Code Playgroud)

Cargo.toml

[package]
name = "rust-test"
version = "0.0.1"
build = "build.rs"

[lib]
path = "src/lib.rs"

[dependencies]

[build-dependencies]
csv = "*"
Run Code Online (Sandbox Code Playgroud)

我可以看到这个错误:

src/lib.rs:1:1:1:18错误:无法找到包装箱 csv

src/lib.rs:1 extern crate csv;

但是当我改变flexible(true)flexible(false)它编译没有任何错误就好了.我需要做些什么来解决这个问题?

我在Windows 7 64位上使用Rust 1.2.0.

She*_*ter 6

更改flexible(false)flexible(true)没有什么区别了我; 都失败了.问题是你build-dependencies出于某种原因选择了,而不仅仅是dependencies.

使用您在答案中提供的src/lib.rs文件以及此Cargo.toml文件:

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

[dependencies]
csv = "*"
Run Code Online (Sandbox Code Playgroud)

它汇编很好.

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