ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Rust Koans数组篇:8个练习掌握索引、越界、迭代与map/filter组合技

Rust Koans数组篇:8个练习掌握索引、越界、迭代与map/filter组合技 Rust Koans数组篇8个练习掌握索引、越界、迭代与map/filter组合技【免费下载链接】rust-koansKoans for the Rust programming language项目地址: https://gitcode.com/gh_mirrors/ru/rust-koans适合人群刚接触 Rust、想用边写边练方式入门的同学。Rust KoansKoans for the Rust programming language是一套以填空 跑测试为核心的 Rust 练习题集每个练习都是一小段带__空缺的测试代码你补上正确答案测试才会由红变绿。本文聚焦其中的数组篇array用 8 个练习带你吃透 Rust 数组的索引访问、越界保护、迭代遍历以及 map/filter 组合技学完即可无缝衔接后续的整数、Vec、String 等章节。开始之前1 分钟把练习跑起来先克隆仓库再在项目根目录运行git clone https://gitcode.com/gh_mirrors/ru/rust-koans cd rust-koans cargo run运行机制很简单cargo run会先执行cargo test测试失败红灯说明当前练习还没填对把__改成正确答案后再跑一次通过后程序会自动把下一个练习追加进来。这就是经典的红—绿—重构学习节奏。数组篇的全部练习都集中在src/koans/array.rs一个文件里通关顺序则记录在src/koans.txt中。练习一索引访问与空数组——从 0 开始数Rust 数组用[类型; 长度]声明长度在编译期固定。第一个练习array_index让你通过索引取出第一个元素let arr: [i32; 5] [1, 2, 3, 4, 5]; assert!(arr[0] 1); // 数组索引从 0 开始旁边的array_empty则要求声明一个空数组[i32; 0]并验证len() 0。两个小练习合起来帮你建立数组 定长 可索引的第一印象。代码位置src/koans/array.rsL4–L16。练习二越界访问——Rust 的翻车保护 ⚠️out_of_index故意让你访问不存在的下标比如对长度 5 的数组执行arr[5]。在 Rust 中这会直接触发 panic编译期就会报错测试用#[should_panic]标注允许这次故意翻车。这是 Rust 内存安全设计的重要一课越界访问不会像 C 语言那样静默读取相邻内存而是立刻中止程序把问题暴露在眼前。代码位置src/koans/array.rsL21–L27。练习三修改数组元素——别忘了 mut数组元素支持按下标赋值arr[4] 0。但有个前提——变量必须用mut声明否则编译器直接拒绝let mut arr: [u8; 5] [0, 1, 2, 3, 4]; arr[4] 0; // 没有 mut 会编译报错这一练习顺带强化了 Rust 的默认不可变哲学。代码位置src/koans/array.rsL31–L36。练习四迭代器——用 next() 逐个取元素array_iteration引入迭代器arr.iter()返回数组的迭代器每次调用next()返回一个OptionTlet mut iterator arr.iter(); iterator.next().unwrap() 3 // 依次是 3、2、1注意返回值带引用说明iter()只是借用数组来遍历不会转移所有权——这是后面学习所有权ownership章节的重要伏笔。代码位置src/koans/array.rsL39–L46。练习五for 循环——更自然的遍历写法除了手动调用next()还可以用for循环直接遍历for x in arr。数组篇最后两个练习for_loops和for_loops_two分别演示了数值自增以及用words.iter()把[I, love, Rust]拼成句子I love Rust。for 循环本质上是迭代器的语法糖二者可以随时互换日常开发中 for 写法更常见。代码位置src/koans/array.rsL95–L115。练习六map——把每个元素加工一遍array_map让每个元素乘以 2arr.iter().map(|x| x * 2) // [2,5,7,4] - 4,10,14,8理解 map 的关键是惰性调用map并不会立刻执行只有调用next()时才会逐个计算。它与前面的iter()天然链式衔接是函数式编程风格的起点。代码位置src/koans/array.rsL49–L57。练习七filter——按条件筛选元素array_filter用闭包条件筛出偶数arr.iter().filter(|x| x % 2 0) // [1,2,3,4,5] - 2,4筛选结果依然是迭代器配合next()逐个取出最后一个next()返回None表示遍历结束。代码位置src/koans/array.rsL60–L67。练习八filter_map——过滤与转换一步到位 数组篇的重头戏是filter_map一次操作同时完成过滤 转换。基础版把值为 1 的元素映射为 3arr.iter().filter_map(|x| if x 1 { Some(x * 3) } else { None })返回Some(...)表示保留并转换返回None表示丢弃。进阶版complex_array_filter_map还演示了判断完全平方数并开方的组合逻辑——两个练习合起来就是 map/filter 组合技的完整实战。代码位置src/koans/array.rsL70–L92。8 个练习速查表练习文件位置核心知识点索引 空数组array.rs L4–L16下标从 0 开始、定长声明越界访问array.rs L21–L27越界 panic、内存安全修改元素array.rs L31–L36mut 可变性迭代器array.rs L39–L46iter() 与 next()for 循环array.rs L95–L115遍历与字符串拼接maparray.rs L49–L57惰性转换filterarray.rs L60–L67条件筛选filter_maparray.rs L70–L92过滤 转换组合练完数组篇接下来学什么按src/koans.txt的路线数组篇之后还有整数integer、Vec、String、哈希表hash_map、结构体struct、所有权ownership与 trait 等章节。数组是其中最基础的一环——它能帮你先习惯类型标注 下标 迭代的思维之后再进入 Vec 等动态集合就会轻松许多。把cargo run坚持跑下去红灯变绿灯的那一刻就是你离 Rust 悟道更近一步的时候。【免费下载链接】rust-koansKoans for the Rust programming language项目地址: https://gitcode.com/gh_mirrors/ru/rust-koans创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表