夜間ではなく、安定したコンパイラでdiesel_demoをビルドしようとしています。私が変更されbuild.rs
の一部は、次のとおりです。メインメソッド内のエクステンションクレート。モジュール::タイプ::メイン::モジュール::タイプ
fn main() {
extern crate syntex;
extern crate diesel_codegen_syntex;
extern crate dotenv_codegen;
use std::env;
use std::path::Path;
let out_dir = env::var_os("OUT_DIR").unwrap();
let mut registry = syntex::Registry::new();
diesel_codegen_syntex::register(&mut registry);
dotenv_codegen::register(&mut registry);
let src = Path::new("src/lib.in.rs");
let dst = Path::new(&out_dir).join("lib.rs");
registry.expand("", &src, &dst).unwrap();
}
錆1.11でビルドすると、私はエラーを取得:
error: mismatched types [E0308]
diesel_codegen_syntex::register(&mut registry);
^~~~~~~~~~~~~
help: run `rustc --explain E0308` to see a detailed explanation
note: expected type `&mut syntex::Registry`
note: found type `&mut main::syntex::Registry`
error: mismatched types [E0308]
dotenv_codegen::register(&mut registry);
^~~~~~~~~~~~~
help: run `rustc --explain E0308` to see a detailed explanation
note: expected type `&mut syntex::Registry`
note: found type `&mut main::syntex::Registry`
main::syntex::Registry
タイプ、コンパイラはそれを手に入れたと理由は何ですかsyntex::Registry
と同じではありませんか?
-default = ["nightly"]
+default = ["with-syntex"]
と2つのsyntex::Registry
種類があるように見えますbuild.rs
にdiesel_codegen_syntex
でdiesel_codegen
を置き換える:
disel_demo
の
Cargo.toml
変更必要この問題を再現します。理由はわかりませんが
diesel_codegen_syntex
は
syntex
に依存していますので、
syntex
という2つの異なるバージョンがありますか?
@kennytm実際に私は前にそのような構造を満たしていなかったので、関数の内部に「extern crate」がある場合、何が起こっているのかを察知しています。 – fghj
'Cargo.lock'ファイルに' syntex'という2つの異なるバージョンがありますか? –
@ChrisEmersonはい、シンタックスの2つのバージョンと 'syntex_something' – fghj