学习Rust适合写什么练手项目？
作为一个穷学生，时不时会因为弱小感到焦虑，为了转移注意力，喜欢实现各种网络协议玩。 Rust的tagged union type很适合这类场景，不管是解析构造二进制协议还是文本协议，写起来都比较舒服。有比较多繁琐代码也可以用过程宏生成，或者借用serde实现。 过程宏听起来是个很黑魔法的东西，但学了才发现根本就是个读字符串生成字符串的单独程序而已，唯一的区别是这是官方提供的代码生成机制，所以易写的同时也易用易集成。 不过由于目前异步相关的开发体验并不优秀，借用检查也会让某些内存相关的优化算法写起来有比较多噪音，所以一般不会有特别细致的优化，单纯是为了写着玩。  平时比较多的使用RSS，但是很多网站又不提供RSS feed，于是用Rust模仿RSShub给自己写了个feed生成器，代码很简单，但比较实用。 (在写的过程中发现RSS库不太好用，就发了个小PR，然后项目管理者直接把我加进了开发组，甚至有发新版本的权限。)  一直对全文检索挺感兴趣，看到有人用Rust写了个类lucene的检索引擎，但是没有中文分词支持，就用别人写的结巴分词Rust实现给检索引擎包了个中文分词器。 算是telegram的轻度用户，telegram没有中文检索支持，就用Python的telegram client下载聊天记录，然后用上边说到的东西做了个命令行的检索器。(然后发现其实regex一把梭更好用)  “Rust是一门贴近底层的语言”、“贴近底层的语言大多不适合业务开发”，于是很多人得出结论“Rust不适合业务开发”。 业余时间用Rust的web框架写了几个小demo，实际体验良好，主要问题来自生态而非语言本身。 事实上诸如模板引擎一类需求，由于Rust有过程宏和官方的构建机制，完全可以做到编译时将jinja2模板编译为Rust代码，进而进行类型和语法的检查，开发体验实际上更好。 Rust对开发效率最大的障碍是生命周期检查，但由于业务代码中往往不会有特别复杂的生命周期关系，也就是大多数生命周期参数可以编译器自动推导，用Rust写业务代码反而比写某些基础组件更舒适。 配合相对现代化的语法和好用的依赖管理构建工具，初学者迈过门槛之后，用Rust写CRUD还是蛮舒适的。 如果能合理利用严格且表意相对丰富的语法，使用类型系统约束一部分逻辑，可以节约大量写测试写文档和调bug的时间，开发效率反而提升不少。  目前官方出品的异步web框架完成了骨架的搭建，缺乏一些血肉的填充，自己也在关注并尝试给它加点工具模块。