gpt4 book ai didi

Rust 包使用不稳定的库功能 'iter_nth_back'

转载 作者:行者123 更新时间:2023-11-29 08:28:21 24 4
gpt4 key购买 nike

我有一个我不太了解的 Rust 应用程序,我从我正在处理的 Python 程序中调用它。我没有更改 Rust 源代码中的任何内容,但是这两个项目的构建过程刚刚停止工作并出现如下错误:

[... several similar errors]
error[E0658]: use of unstable library feature 'iter_nth_back'
--> /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/ndarray-0.13.0/src/iterators/mod.rs:585:46
|
585 | either_mut!(self.inner, iter => iter.nth_back(n))
| ^^^^^^^^
|
= note: for more information, see https://github.com/rust-lang/rust/issues/56995

error: aborting due to 5 previous errors

For more information about this error, try `rustc --explain E0658`.
error: Could not compile `ndarray`.

我查看了 ndarray releases 的列表, 几天前发布了 0.13.0 版本,所以我怀疑它与我的构建环境不兼容。

如何让我的构建再次运行?

以下是重现问题的完整步骤:

$ sudo docker run -it --rm rust:1.36.0
# USER=foo cargo new hello_world --bin
Created binary (application) `hello_world` package
# cd hello_world/
# echo 'bio = "^0"' >> Cargo.toml
# cargo build
Updating crates.io index
Downloaded bio v0.29.0
Downloaded [... many more ...]
Downloaded ndarray v0.13.0
Downloaded [... many more ...]
Compiling proc-macro2 v1.0.4
Compiling [... many more ...]
Compiling ndarray v0.13.0
Compiling [... many more ...]
Compiling statrs v0.11.0
error[E0658]: use of unstable library feature 'iter_nth_back'
--> /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/ndarray-0.13.0/src/iterators/mod.rs:134:5
|
134 | / fn nth_back(&mut self, n: usize) -> Option<*mut A> {
135 | | let index = self.index?;
136 | | let len = self.dim[0] - index[0];
137 | | if n < len {
... |
147 | | }
148 | | }
| |_____^
|
= note: for more information, see https://github.com/rust-lang/rust/issues/56995
[... other, similar errors ...]
Compiling serde_derive v1.0.101
Compiling strum_macros v0.16.0
Compiling snafu-derive v0.5.0
error: aborting due to 5 previous errors

For more information about this error, try `rustc --explain E0658`.
error: Could not compile `ndarray`.
warning: build failed, waiting for other jobs to finish...
error: build failed
#

有趣的是,如果我运行最新的 rust docker 镜像 1.38,我没有看到错误。但是,我的构建过程是从 Ubuntu Xenial 的包管理器安装 Rust,所以我可能无法轻松升级它。

最佳答案

新答案:升级 Rust

事实证明,升级 Rust 并没有我想象的那么难,然后我就不用更改 Rust 源代码了。

在我的 .travis.yml 文件中,我替换了这个:

- sudo apt-get install -y cargo

用这个:

- sudo curl https://sh.rustup.rs -sSf | sh -s -- -y
- source ~/.cargo/env

原始答案:引脚依赖

我尝试添加显式 ndarray 依赖项并将其固定在 0.12,但这没有用。然后我注意到 bio 在最近几天也有一个新版本。固定该依赖项有效。

$ sudo docker run -it --rm rust:1.36.0
# USER=foo cargo new hello_world --bin
Created binary (application) `hello_world` package
# cd hello_world/
# echo 'bio = "~0.28.2"' >> Cargo.toml
# cargo build
Updating crates.io index
Downloaded bio v0.28.2
Downloaded [... many more ...]
Downloaded ndarray v0.12.1
Downloaded [... many more ...]
Compiling proc-macro2 v1.0.4
Compiling [... many more ...]
Compiling ndarray v0.12.1
Compiling [... many more ...]
Compiling csv v1.1.1
Compiling hello_world v0.1.0 (/hello_world)
Finished dev [unoptimized + debuginfo] target(s) in 14m 15s
#

关于Rust 包使用不稳定的库功能 'iter_nth_back',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58175119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com