我已经将一些功能提取到一个箱子中,我认为这些功能对其他人也有用,所以我想将其发布在 crates.io 上。然而,我的代码使用了一些不稳定的功能。如何正确包装这个箱子?
我想明确说明要包含哪些文件,如 https://doc.rust-lang.org/cargo/reference/publishing.html 中所述:
[package] # ... include = [ "**/*.rs", "Cargo.toml", ]
我应该将
rust-toolchain.toml
文件添加到包含中吗?看起来像这样:
[toolchain]
channel = "nightly"
或者有更好的方法,例如准确指定板条箱需要夜间的哪些功能?毕竟,未来的某些夜间版本可能不再支持这些功能。
或者也许
#![feature(...)]
中的src/lib.rs
)注释已经足够了?
或者也许应该使用 Cargo.toml
清单中的
rust-version字段来实现此目的?
所有这些不确定性都归结为标题中的问题:当需要使用 nightly rust 工具链构建时,如何为
cargo publish
准备一个板条箱?
据我所知,对于夜间板条箱没有特殊考虑,也没有标准化的方法来表明它依赖于不稳定的功能。
rust-toolchain.toml
不是已发布包的一部分rust-version
,但指定夜间版本要么不起作用,要么被忽略发布 Nightly crate 的最佳方法是在自述文件中明确说明它依赖于 nightly 编译器。即使这样,尝试在稳定版本上使用它的用户也会看到“”
#![feature]
可能无法在稳定版本通道上使用”错误 - 希望这一点足够清楚。