如何解决Rust:使用 ndarray-linalg 和 ndarray 板条箱的问题
我正在用 Rust 编写一个交叉编译的库(适用于 IOS/Android/Linux/MacOS)。我正在使用 ndarray 来实现算法。
我需要计算一个 ArrayBase 的范数。我发现 ndarray-linalg 是一个箱子,它在 ndarray 的类型上实现了许多特征。
但是我无法使用它:
// Cargo.toml
ndarray = { version = "0.15.1",default-features = true }
ndarray-linalg = {version = "0.13.1"}
// src/main.rs
use ndarray::*;
use ndarray_linalg::*;
fn main() {
let foo = ArrayBase::from(&[1,2,3]);
foo.norm_l2(); // produces error
//^^^^^^^ method not found in `&ArrayBase<OwnedRepr<f64>,Dim<[usize; 1]>>`
}
所以我有两个问题:
- 如何解决这个问题并使这些方法在我的程序中可用?
- 无论如何,使用这些 crate 来针对 android 和 IOS 架构进行编译是个好主意吗?
提前致谢。
解决方法
ndarray-linalg
0.13.1 版需要 ndarray
0.14 版。因此,您可以将 ndarray
版本降低到 0.14(在这种情况下您的代码将起作用),或者删除 ndarray-linalg
依赖项。如果您想继续使用 ndarray
0.15.1 并且只需要计算 L2 范数,那么自己用几行代码来实现它可能是最简单的。
ndarray
0.15 版仅在一周前发布,因此可能很快会有支持它的 ndarray-linalg
版本。
ndarray-linalg
目前仅支持 x86_64
指令集。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。