暂无搜索历史
上篇我们学了 macro_rules!,你已经能用它写一些很酷的宏了。但你可能发现了一些限制:
写到手酸,然后心想:"这些函数除了类型不一样,其他都一模一样啊!能不能让编译器帮我生成?"
你是一个 Rust 程序员,代码写得风生水起,内存安全、并发无忧。突然有一天,老板走过来:
学到这里,你可能已经对 Rust 的借用检查器又爱又恨了。爱它帮你避免了无数内存 bug,恨它有时候管得实在太宽——"这个引用不能同时存在"、"那个变量已经移动...
上篇咱们学了异步编程的基础(async/await、Future),但光有语法不够啊——你得有地方跑才行!
Rust 的异步编程基于 Future 和 async/await 语法。今天我们就来学习这些概念,以及背后的 Pin 和 Waker 机制。
并发编程也是一样。知道工具怎么用只是第一步,更重要的是知道在什么场景下用什么工具,以及如何避免常见的并发陷阱。
上篇我们说了,Rust 推崇消息传递,不推荐共享状态。但现实是:有时候你就是需要共享状态。
还记得上篇我们说的厨房类比吗?多个厨师(线程)同时做菜,如果都去同一个冰箱(共享内存)拿食材,很容易撞车。
想象一下你在厨房做菜,你一个人切菜、炒菜、洗碗,效率还行但有点慢。于是你叫来了三个朋友帮忙:一个切菜,一个炒菜,一个摆盘。理论上应该快很多,但问题来了:
Rust 里有三种"全局变量":const、static、lazy_static。它们看起来差不多,但用法和语义差别很大。
今天咱们就来攻克生命周期的进阶内容:多个生命周期参数、'static 生命周期、trait 对象中的生命周期。
后来才知道,这玩意儿叫 never type,代表"永远不会返回"。今天咱们就来扒一扒 Rust 类型系统里这些"高级玩家"。
但 Rust 的 Trait 可不止这些基础操作。今天咱们要看看 Trait 的高级玩法:
这时候,内部可变性登场了。它就像 Rust 规则里的"后门":外面看着是不可变的,但里面偷偷能改。
于是就有了智能指针。它们比普通指针多了啥?多了"智能"——知道什么时候该分配内存,什么时候该释放,还能处理各种复杂的所有权关系。
你有没有想过,当你写下一行 let x = 5; 时,Rust 到底把你的 5 放在了哪里?
要是有自动测试,你就能在上线前发现问题。今天咱们就聊聊 Rust 的测试系统——内置的、强大的、让你爱上写测试的神器。
Rust 的 Cargo 让这一切成为了历史。今天咱们就聊聊这个让依赖管理变得如此简单的神器。
兄弟,那你可太小看 Rust 的模式匹配了!它不仅能匹配值,还能解构数据、守卫条件、嵌套匹配。今天咱们就聊聊这个让代码像诗歌一样优雅的神器。
暂未填写公司和职称
暂未填写个人简介
暂未填写技能专长
暂未填写学校和专业
暂未填写个人网址