How to tell Cargo to use a git repository as source for an indirect dependency instead of crates.io?

巧了我就是萌 提交于 2019-12-05 00:44:15

You can use the [replace] section in your project's Cargo.toml. You can find the documentation about that feature here in the Cargo documentation.

In your case, glium depends on glutin 0.6.1. The version 0.6.1 on crates.io still contains the bug. So just add this to your Cargo.toml:

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

Note however,

[...] that the replaced crate must not only have the same name but also the same version.

But even in the case of a version-mismatch (the repository already contains a newer version), you could still be in luck if the crate's maintainer creates git tags for every version (many in the Rust community do). In that case you can just specify the tag:

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

Sadly, this won't work with glutin, because the maintainer did not create tags for every version. In that case you can simply find the last commit before the version was bumped and specify it with rev = 'b4a3d0...' or specify a specific branch with the branch = '...' key.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!