嗯。。。最近在学习Rust这门语言。
在这之前就有个规划,先抱着做一个小项目的目标学一遍,然后把这个想法实现(肯定会遇到很多实际问题然后解决),然后再回顾一遍查漏补缺。
本篇既是之前的规划,也是项目实现之后的总结。
我学的是什么教程
-
最开始看的是B站上最新最全Rust编程语言入门教程,看完后觉得不够深入也不够直白浅显,属于不上不下的那种。
-
然后看了Rust编程语言入门教程加上Rust Async 异步编程。
这是对照两本英文书来讲的,个人感觉比较基础,易于接受和理解,适合入门。
想做的事情和遇到的问题
-
设置镜像代理
在国内开发,换源换镜像是个普遍状况了。毕竟cargo官方源下载依赖实在是太慢。 -
配置文件,全局使用
我想在开局从文件中读取配置,作为全局变量。这在其它语言里面是一件非常easy的一件事情,但在这里变得有点复杂。
我如果想用静态常量,那么必须一开始就初始化,没法从文件读取。
我如果想用变量,那么必须来一套Arc + Mutex,以使得它们能够用于多线程而不会编译报错。
但是明明知道配置读取以后就不会变化,我们在读取的时候还要去加锁去竞争,显然效率非常低下。 -
HTTP(S)代理(同步 + 异步)
我想做的东西比这个要复杂一点点,但也只有那么一点点。 -
建立或监听TLS加密连接
给单纯的TCP连接套上一层壳。 -
HTTPS WebSocket通道
本地与远程之间建立加密的WebSocket通道,远程代理转发本地接收到的HTTP(S)流量。 -
交叉编译
如果想要跨平台的话,要么选择对应平台的容器分别进行编译,要么进行交叉编译。 -
比较时差大小犯的错误 时间戳是
u128
类型,unsigned无符号,这个问题卡了我很久,就很郁闷。