Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

设计模式 - Rust设计模式 #10

Open
hexiaowen opened this issue Dec 21, 2021 · 0 comments
Open

设计模式 - Rust设计模式 #10

hexiaowen opened this issue Dec 21, 2021 · 0 comments
Labels

Comments

@hexiaowen
Copy link
Owner

设计模式 - Rust 设计模式

  1. 1. 引言
  2. 2. 习惯用法
    1. 2.1. 以借用类型为参数
    2. 2.2. 用 format! 连接字符串
    3. 2.3. 构造器
    4. 2.4. Default 特性
    5. 2.5. 将集合视为智能指针
    6. 2.6. 确定性析构
    7. 2.7. mem::{take(), replace()}
    8. 2.8. 栈上动态分发
    9. 2.9. 外部语言接口
      1. 2.9.1. 常见错误处理
      2. 2.9.2. 接受字符串
      3. 2.9.3. 传递字符串
    10. 2.10. 关于 Option 的迭代器
    11. 2.11. 向闭包传递变量
    12. 2.12. 留隐私,为扩展
    13. 2.13. 关于初始化的文档
    14. 2.14. 临时可变性
  3. 3. 设计模式
    1. 3.1. 生成器
    2. 3.2. 分解结构体
    3. 3.3. Entry API
    4. 3.4. 外部语言接口使用
      1. 3.4.1. 基于对象的 API
      2. 3.4.2. 类型合并封装
    5. 3.5. Fold
    6. 3.6. 解释器
    7. 3.7. 新类型
    8. 3.8. RAII 守卫
    9. 3.9. 偏爱更小的库
    10. 3.10. 策略模式
    11. 3.11. 将不安全置于小模块中
    12. 3.12. 访问者模式
  4. 4. 反模式
    1. 4.1. #[deny(warnings)]
    2. 4.2. Deref 多态
  5. 5. 函数式编程
    1. 5.1. 编程范式
  6. 6. 补充材料
    1. 6.1. 设计原则
  • Light
  • Rust (default)
  • Coal
  • Navy
  • Ayu

Rust 设计模式

设计模式

设计模式设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。设计模式是用来描述一门编程语言文化的好标准。设计模式与编程语言息息相关,一门语言中的模式可能在另一种语言中没什么必要,因为语言可能自身特性就能解决问题。或者可能在另一门语言中由于缺少某些特性,压根就实现不了。

设计模式如果滥用,那将会增加程序不必要的复杂性。不过设计模式倒可以用来分享关于一门语言深层次和进阶水平的知识。

Rust 中的设计模式

Rust 有很多独特的特性。这些特性消除了大量的问题,给我们极大的帮助。有些还是 Rust 的独特设计模式。

YAGNI

如果你还不了解这个词,YAGNI 是不过早添加功能的缩写(You Aren't Going to Need It)。这是写代码时的重要原则。

我曾写过的最好的代码是我没写过的代码

如果我们将 YAGNI 原则应用到设计模式中,我们可以发现 Rust 的特性能让我们省掉很多不必要的模式。例如,不再需要策略模式。在 Rust 里可以直接用traits

TODO: Maybe include some code to illustrate the traits.
http://chuxiuhong.com/chuxiuhong-rust-patterns-zh/patterns/index.html
http://chuxiuhong.com/chuxiuhong-rust-patterns-zh/patterns/index.html

http://chuxiuhong.com/chuxiuhong-rust-patterns-zh/patterns/index.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant