Skip to content

Latest commit

 

History

History
 
 

2_idioms

README.md

第 2 章:惯用法(Idioms)

这些任务描述了编写设计良好且符合惯用风格的 🏠 Rust 代码所必需的一些常用惯用法。

❗️在完成本任务之前,你应该先完成它的所有子任务。

完成这些任务之后,你应该能够回答以下问题:

  1. 为什么我要关注类型以及用类型来表达事物?类型如何帮助提升程序正确性的保证?
  2. 编写设计良好且符合人体工学的 🏠 Rust API 的关键是什么?为什么?
  3. mem::replace 为什么会存在?它解决了什么目的?在何时、为什么它真的很有用?
  4. 输入类型多态在 🏠 Rust API 中通常是怎样组织的?它有什么代价?
  5. 在 🏠 Rust 中有哪些为源代码做前瞻性保护的方式和工具?

若想更熟悉编写符合惯用风格的 🏠 Rust 代码,请阅读以下文章:

任务

预计耗时:2 天

设计并实现一个 VendingMachine 类型,它的行为类似一台 📰 自动售货机:

  • Product 应该有价格和名称;
  • VendingMachine 应该有有限的 Product 容量;
  • VendingMachine 应该能够找零;
  • 如果无法找零,VendingMachine 应该拒绝购买;
  • Coin 的面值只能是 1、2、5、10、20 和 50。

尽量让它的使用 API 尽可能方便。