我想接管已经部署在crates.io中的不再维护的开源 Rust 包。
虽然在Cargo.toml中要求为我的分支使用不同的名称显然是适当且适当的,但我不希望要求更改其余代码,以使潜在用户更容易切换。当我简单地重命名Cargo.toml中的条目时,很多代码到处都被破坏了。确实需要旧名称。
通过比较性能和自己测试的结果,提供用户可以轻松切换的相同功能的可插入实现看起来更合乎逻辑。
作为解决方法,我目前在Cargo.toml中指定 git URL :
old_name = { git = "https://github.com/new_repository", branch = "1.0.0" }
在测试我自己的部署时,这对我有用。但我可能更喜欢 crates.io 作为公共开源项目。
是否可以使用与代码中引用的包名称不同的名称在crates.io上部署项目,以及如何部署?我检查了CargoPublish的文档,但它似乎没有涵盖这种情况。
编辑:如果在不重构的情况下无法实现此目的,请给出如何重构代码的提示,以便每次包名称更改时都不需要批量重命名。大多数对自己的包名称的引用似乎都在测试中。
依赖包可以通过指定
package
(文档)来重命名依赖项。看起来是这样的:这意味着它将像
old_name
代码中一样可访问,但货物将new_name
在解析时查找它。除此之外,没有办法以一个名称发布但让用户使用不同的名称。
对于在包本身内重命名(用于集成测试、示例等),您可以通过在使用的每个范围中使用别名来避免完全重构: