Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 如何告诉Cargo使用git存储库作为间接依赖项的源,而不是crates.io?_Rust_Rust Cargo - Fatal编程技术网

Rust 如何告诉Cargo使用git存储库作为间接依赖项的源,而不是crates.io?

Rust 如何告诉Cargo使用git存储库作为间接依赖项的源,而不是crates.io?,rust,rust-cargo,Rust,Rust Cargo,,通过Emscripten交叉编译到JavaScript终于在夜间流行起来。我想以这种方式使用glium编译一个项目。然而,在许多板条箱中仍然存在许多与Emscripten相关的bug。虽然维护人员通常会快速修复这些错误,但他们不一定会立即发布这些错误修复 在我的例子中,glium依赖于glutinglutin有一个bug,现在已经修复,但只在git存储库中,而不是在crates.io上。注意:glutin不是我的项目的直接依赖项;只有通过胶质细胞的间接治疗 我如何告诉Cargo使用glutin

,通过Emscripten交叉编译到JavaScript终于在夜间流行起来。我想以这种方式使用glium编译一个项目。然而,在许多板条箱中仍然存在许多与Emscripten相关的bug。虽然维护人员通常会快速修复这些错误,但他们不一定会立即发布这些错误修复

在我的例子中,
glium
依赖于
glutin
glutin
有一个bug,现在已经修复,但只在git存储库中,而不是在
crates.io
上。注意:
glutin
不是我的项目的直接依赖项;只有通过胶质细胞的间接治疗


我如何告诉Cargo使用
glutin
而不是
板条箱.io

您可以使用项目的
Cargo.toml
中的
[replace]
部分。您可以找到有关该功能的文档

在您的情况下,
glium
依赖于
glutin 0.6.1
。crates.io上的版本
0.6.1
仍然包含该漏洞。所以只需将其添加到您的
货物中。toml

[replace]
"glutin:0.6.1" = { git = 'https://github.com/tomaka/glutin' }

但是请注意

[…]更换的板条箱不仅必须具有相同的名称,而且必须具有相同的版本

但是,即使在版本不匹配的情况下(存储库已经包含了一个更新的版本),如果板条箱的维护人员为每个版本创建git标记(Rust社区中的许多人都这样做),您仍然可能很幸运。在这种情况下,您可以只指定标记:

[replace]
"glutin:0.6.1" = { 
    git = 'https://github.com/tomaka/glutin' 
    tag = 'v0.6.1'
}

遗憾的是,这不适用于glutin,因为维护人员没有为每个版本创建标记。在这种情况下,您可以简单地找到版本被碰撞之前的最后一次提交,并使用
rev='b4a3d0…'
指定它,或者使用
branch='…'
键指定一个特定的分支。

“x:version.number”=…
“x={version=“version.number”之间有区别吗“,…}
?@Jsor是的,后者不起作用。LHS定义了要替换的内容,并且您只能替换特定版本的板条箱,而不能替换一般情况下的某些板条箱(dep树中可能有两个不同版本的板条箱)。RHS说明了替换内容,如回答中所述,该版本必须与LHS版本相匹配,因此在右侧编写它没有意义。请注意,
[replace]
已被弃用,应改用
[patch]
。更多信息,请参见答案中链接的货运单据。