下面的代码有问题
extern crate num;
extern crate rustfft;
use rustfft::num_complex::Complex;
use rustfft::num_traits::Zero;
pub fn ct_fft(input: &Vec<f64>, sampling: u32) {
let data_size = input.len();
let mut input_array: Vec<Complex<f64>> = Vec::with_capacity(data_size);
let fft = rustfft::FFTplanner::new(false).plan_fft(data_size as usize);
for v in input {
input_array.push(Complex { re: *v, im: 0.0 });
}
}
我得到错误:
error[E0283]: type annotations required: cannot resolve `_: rustfft::FFTnum` --> src/ctdsp.rs:19:15 | 19 | let fft = rustfft::FFTplanner::new(false).plan_fft(data_size as usize); | ^^^^^^^^^^^^^^^^^^^^^^^^ | = note: required by `<rustfft::FFTplanner<T>>::new` error: aborting due to previous error
我不明白为什么会出现这个错误;我之前使用过 RustFFT,它没有任何问题,而且我使用它的方式完全相同。我找不到任何关于 RustFFT 错误的信息。
使用rust 版本:
╰─$ rustc --version rustc 1.26.0-nightly (9c9424de5 2018-03-27)
最佳答案
问题(来自您的评论)是您没有使用 fft
。 Rust 可以推断类型,但它只能在有足够上下文的情况下这样做。如果您从不使用 fft
,则编译器没有足够的信息来确定完整的类型应该是什么。
请记住,Rust 中的每个变量都有一个完整的类型。只是在某些情况下,Rust 可以自行解决并让您省略类型。这不是其中一种情况。
关于compiler-errors - 使用 RustFFT 时出现 "type annotations required",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49538227/