当前位置: 首页 > 知识库问答 >
问题:

铁锈手册中的铁锈示例:用于范围内的循环

尚棋
2023-03-14

在铁锈书里有一个关于音频编码器的有趣例子:比较性能:循环和迭代器

let buffer: &mut [i32];
let coefficients: [i64; 12];
let qlp_shift: i16;

for i in 12..buffer.len() {
    let prediction = coefficients.iter()
        .zip(&buffer[i - 12..i])
        .map(|(&c, &s)| c * s as i64)
        .sum::<i64>() >> qlp_shift;
    let delta = buffer[i];
    buffer[i] = prediction as i32 + delta;
}

>

此外,压缩时,它将系数中的当前项配对-系数。iter()-并与缓冲区[i-12..i]配对,这同样没有意义,因为我不知道如何将索引i和子列取为类似12。。我

欢迎任何帮助!

共有1个答案

丰胤运
2023-03-14

循环从12开始,从而跳过缓冲区中的前12个元素:

for i in 12..buffer.len() {

正如注释中指出的,Rust解析器实际上将缓冲区[i-12... i]解释为缓冲区[(i-12)... i]。因此,在算法的后面,它引用了前面的12个元素

.zip(&buffer[i - 12..i])

这是创建一个12个元素的滑动窗口,在当前索引之前开始12个元素,然后用12个系数的固定数组压缩它们。

 类似资料:
  • 我可以想到许多地方,C语言中的联合有助于节省内存。因为Rust是一种系统编程语言,为什么它不支持联合呢?

  • 从文件上看,还不清楚。在Java中,可以使用方法,如下所示:

  • 我正在尝试制作VGA文本动画的操作系统,但它的处理速度非常快。 所以,我想做“等待”功能,每次等待100毫秒,但我不知道如何不用std板条箱。 那么问题是,我如何在没有性病的情况下睡觉/等待生锈? 谢谢

  • 自我介绍 实习项目说一下,说了后感觉面试官不感兴趣 自己项目的断点续传怎么实现的 mysql 说一下sql调优经历,我说索引和表关联 MySQL事务特性,acid,之记起来ci,ad代表什么忘了 事务隔离级别,磕磕绊绊地说完了,忘记讲各个级别能解决什么问题了 Java基础 collections有什么实现,我把map当成collections了 list有什么实现,插入海量数据,arraylist

  • 云边开源轻博是国内首个开源的轻博客平台,作者吸取轻博使用方面的优点,争取做最好用的开源轻博客客给每一位朋友使用,为站长搭建更为简单方便的交流平台。   地铁客开源轻博v1.8 Beta 更新说明 1、全站素材文件、JS文件、CSS的优化和压缩,极大的提高网站的加载速度; 2、界面UI的更新,多谢群里小胖的大力支持,为地铁客做出了精美的UI设计图,这次更新一部分,剩下的会继续努力的! 3、数据库的优