Rust 如何告诉Cargo使用git存储库作为间接依赖项的源,而不是crates.io?
,通过Emscripten交叉编译到JavaScript终于在夜间流行起来。我想以这种方式使用glium编译一个项目。然而,在许多板条箱中仍然存在许多与Emscripten相关的bug。虽然维护人员通常会快速修复这些错误,但他们不一定会立即发布这些错误修复 在我的例子中,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
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]
。更多信息,请参见答案中链接的货运单据。