新闻详情

新闻详情

首页 / 资讯中心 / 详情

Rust Koans布尔与整数篇:5个练习吃透Rust基础类型、比较运算与可变性

发布时间:2026/9/9 15:05:46来源:尧图网络
Rust Koans布尔与整数篇:5个练习吃透Rust基础类型、比较运算与可变性
Rust Koans布尔与整数篇5个练习吃透Rust基础类型、比较运算与可变性【免费下载链接】rust-koansKoans for the Rust programming language项目地址: https://gitcode.com/gh_mirrors/ru/rust-koansRust Koans 是一套以填空式测试驱动的 Rust 语言入门练习集它把布尔、整数等基础类型拆解成一个个独立的小测试。你只需要把代码里的__替换成正确答案运行测试通过后就能在红绿重构的节奏中一步步吃透 Rust 基础类型、比较运算与可变性。本篇聚焦布尔与整数篇用 5 个精选练习带你快速上手。Rust Koans 是什么用填空练习开启 Rust 学习之旅Rust Koans 借鉴了 Ruby Koans 的教学思路不靠枯燥讲解而是让代码本身当老师。每个练习都是一个带空白的测试用例例如src/koans/the_truth.rs里第一关只有一行assert!(__)填上true即可通关。运行方式非常简单先克隆仓库git clone https://gitcode.com/gh_mirrors/ru/rust-koans然后进入目录执行cargo run。程序会通过src/main.rs自动读取src/koans.txt中的练习顺序把下一个待完成的练习追加到测试路径里跑不过就提示你继续参悟。Rust 基础类型入门布尔与整数家族一览在进入练习前先认识两位主角布尔类型bool只有true和false两个值常由比较运算产生整数类型分为无符号u8、u16、u32、u64和有符号i8、i16、i32、i64两大类类型有无符号取值范围u8无符号0 ~ 255i8有符号-128 ~ 127u16无符号0 ~ 65535i16有符号-32768 ~ 32767记住这张表接下来的练习全部围绕它展开。练习一布尔比较运算——与!的真相布尔篇第一关在src/koans/boolean.rs中核心是掌握比较运算符#[test] fn truth() { assert!(true true); // 相等比较返回 true } #[test] fn falsehood() { assert!(false ! true); // 不等比较返回 true }要点总结判断两个值是否相等相等返回true!判断两个值是否不等不等返回true比较运算的结果本身就是bool类型可直接放进assert!里练习二比较运算延伸——字符串与整数的相等判断比较运算不只作用于布尔值字符串和整数同样适用。练习二依然在src/koans/boolean.rs#[test] fn string_equality() { assert!(Stuff Stuff); } #[test] fn int_equality() { let num: i8 5; assert!(num 5); }这里有两个值得注意的细节字符串用比较的是内容是否相同整数比较要求两侧类型一致i8类型的变量要和i8字面量比类型不匹配会直接编译报错练习三无符号整数——从 0 开始的最小值边界进入src/koans/integer.rs先看无符号整数。无符号意味着不能为负数最小值恒为 0#[test] fn unsigned_ints() { assert!(u8::min_value() 0); } #[test] fn sub_unsigned_int() { let mut num: u8 10; num - 10; assert!(num u8::min_value()); // 减到 0 就到极限了 } 关键认知u8的取值下限是 0想再往下减就会触发溢出overflow这在 Rust 中是不被允许的。这个练习让你直观感受无符号的边界约束。练习四有符号整数——负数范围与最大值相加有符号整数可以表示负数且负方向的范围比正方向多 1 个刻度i8为 -128 ~ 127#[test] fn signed_ints() { assert!(i8::min_value() 0); } #[test] fn sub_signed_int() { let mut num: i8 0; let negative: i8 -128; num negative; assert!(num i8::min_value()); }再看一个双向逼近最大值的练习#[test] fn add_numbers() { let mut sig: i8 0; let mut unsig: u8 0; sig 127; unsig 255; assert!(sig i8::max_value() unsig u8::max_value()); } 记忆口诀i开头的有符号整数能装负数u开头的无符号整数只能从 0 开始往上加。练习五可变性——mut关键字的正确姿势Rust 中变量默认不可变想修改值必须显式声明mut。这是新手最容易踩的坑练习五专门针对这一点#[test] fn mutating_ints() { let mut num: i8 1; // 少了 mut 就无法 num 2 num 2; assert!(num 3); } #[test] fn referencing_values() { let num: i8 1; let mut mut_num: i8; // 先声明一个可变变量 mut_num num; // 再赋值并修改 mut_num 1; assert!(num ! mut_num); // num 不可变mut_num 可变 }️ 动手验证把let mut num改成let num编译器会立刻报错 cannot assign twice to immutable variable。这正是 Rust 设计哲学——用编译器约束可变性让代码行为更可预测。红绿重构像高手一样完成每个练习Rust Koans 完整复刻了 TDD 的红绿重构循环红Red运行cargo run看到测试失败此时你知道该填哪里绿Green填入正确答案测试通过系统提示下一个练习重构Refactor回头想想这个练习教了什么尝试优化表达每通关一个文件后续练习才会被追加进来。这种循序渐进的设计让src/koans/boolean.rs和src/koans/integer.rs成为新手最友好的两站。小结与下一步继续你的 Rust Koans 完整修行路径通过这 5 个练习你已经掌握了✅ 布尔值与、!比较运算✅ 无符号整数与有符号整数的取值范围差异✅ 整数加减运算与最大值/最小值边界✅ 可变性mut关键字的声明与使用场景src/koans.txt显示布尔与整数之后还有数组、向量、字符串、HashMap、结构体、所有权和 trait 等着你。从the_truth到traits每一关都是上一关的延伸。继续cargo run当你看到 There will be no more tasks 时恭喜你Rust 修行之路已经走完大半【免费下载链接】rust-koansKoans for the Rust programming language项目地址: https://gitcode.com/gh_mirrors/ru/rust-koans创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

DDL创建命令详解:建库、建表、索引、视图与触发器 2026/9/9 15:05:42

DDL创建命令详解:建库、建表、索引、视图与触发器

DDL 创建命令全解析:从 CREATE DATABASE 到 CREATE TRIGGER 一次讲透如果你正在准备数据库考试、刚接触数据库管理系统,或者在 MySQL、SQL Server、PostgreSQL 里建表建索引时总被各种语法细节卡住,这篇内容可以直接收藏。我们聚焦 DDL&#…

阅读更多 →
MySQL锁机制与InnoDB行锁排查实战:从表锁、临键锁到死锁处理 2026/9/9 15:05:42

MySQL锁机制与InnoDB行锁排查实战:从表锁、临键锁到死锁处理

线上出过这么一件事:一条 UPDATE 的 where 条件没走索引,正好赶上业务高峰,结果整张表被锁住,读流量也跟着堆积,最后只能等锁超时慢慢恢复。之后我把 MySQL 锁机制又重新过了一遍。MySQL 锁,或者说 InnoDB …

阅读更多 →
主键与外键:SQL数据完整性约束的实战指南 2026/9/9 15:05:42

主键与外键:SQL数据完整性约束的实战指南

主键和外键是 SQL 里最基础也最容易“会用但说不清”的约束。很多人建表的时候加个 PRIMARY KEY,再写个 FOREIGN KEY,觉得能跑就行,直到某天插入数据报错、删数据卡住、批量同步数据对不齐,才开始理解这两个约束到底在替你做什么。…

阅读更多 →
MySQL锁机制深度解析:从加锁原理到死锁排查实战 2026/9/9 15:05:42

MySQL锁机制深度解析:从加锁原理到死锁排查实战

先问一个场景:某天下午业务高峰期,数据库监控突然报警,一张订单表的UPDATE语句平均执行时间从 2ms 涨到了 30 秒。你登录 MySQL 一看,SHOW PROCESSLIST里排着十几个Waiting for lock状态的会话,前面一个事务迟迟不提交…

阅读更多 →
Windows下Nginx安装配置指南:从启动到反向代理实战 2026/9/9 15:05:42

Windows下Nginx安装配置指南:从启动到反向代理实战

前一阵子一个做运维的朋友跟我抱怨,说他在Windows服务器上装Nginx,照着网上教程弄了半天,不是双击没反应,就是启动后浏览器打不开,好不容易起来了,关又关不干净,80端口一直占着。我一听就笑了—…

阅读更多 →
二叉树遍历与旋转操作实战:从递归到AVL树的自平衡机制 2026/9/9 15:02:41

二叉树遍历与旋转操作实战:从递归到AVL树的自平衡机制

最近在帮团队做代码评审的时候,发现一个很有意思的现象:很多写了好几年业务的同学,一碰到二叉树相关的需求就有点发怵。其实也不怪他们,日常开发里链表都未必天天写,更别说二叉树了。但无论是面试也好,还是…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞