之前写sealed trait
时没提他在oauth2-rs
中怎么用, 为什么用,这个其实在状态接口设计中很有用,今天展开聊聊。
Rust设计模式:typestate
今天聊聊typestate
模式。
新版oauth2-rs
使用这个模式是想解决一个问题。
在Oauth2
中,一般需要提前配置好auth_url
, token_url
, introspect_url
等,才能调用后续的鉴权相关功能。比如没有token_url
配置好,你就无法成功拿授权码(code
)获取token
。
但如果用户忘了配置,那就会在调用获取token
时才得到运行时错误。
能不能在编译时就把错误暴露出来,让用户提前感知问题?
这就是typestate
模式能很好解决的问题。
如何用Rust快速构建AWS Lambda Function
AWS Lambda Function
是轻量级的计算服务。优势是按需付费,专注于功能,服务本身如何构建暴露都有AWS
都不需要自己操心。
而按需付费基本就是服务使用时长和内存占用了,这个优化的话那妥妥的是Rust
的拿手好戏, 所以现在有好多Serverless
服务都用Rust
构建的Lambda Function
来搞。
今天简单看下如何用Rust
快速构建Lambda Function
(别担心没aws环境,往下看,有本地沙箱可尝试)
Rust之tower如何构建请求中间件
提到Rust
请求中间件, 就不能不提tower
。
tower
是一个请求协议无关的的中间件定义类库,主要定义了Service
和Layer
两个trait
来帮助实现可重用的请求处理中间件。
今天拿聊聊它如何巧妙构建起中间件。
tokio之如何观测Rust异步任务的调度
我们知道Rust
的异步是以task
的调度来构建的。task
作为抽象在语言层面的调度单元。
那如果想要观测其的调度执行有没有办法呢?。
有的!异步runtime
库tokio
就有个tokio-console
可以实现对异步调度的观测和分析,其对了解调度的机制和性能分析都很有帮助。
Rayon魔法:使Rust并行编程变得轻而易举
Rayon
库是一个数据并行化(data-parallelism
)的 Rust
库。在并行编程里是一个很有趣的存在, 且非常的容易上手。它可以很轻松的将同步计算流程转化为并行计算。而且基本能保证编译通过就不会有data race
。
Rust异步编程之Future并发处理
上篇文章我们知道,Rust
的Future
是异步执行,await
时是阻塞在当前的异步任务task
上,直到完成。
当多个异步任务执行时,如果只能都阻塞一个个执行,那就变成同步串行执行了,当然不是我们通常希望的并发处理方式,今天就来聊聊多个异步任务的一些并发处理方式。
Rust异步编程之Future初探
Rust
的Future
是用来实现异步编程的。今天我们围绕其了解下Rust
的异步编程是如何构建。
Rust
用async
就能轻松创建开销很小的可异步执行的函数,在await
时其才会被调度执行。
其比较轻量级,有别于异步多线程,依托在操作系统线程之上,构建大量并发则需要大量的线程资源,对资源的消耗比较大。
比如下边用async
构建异步任务:
1 | async fn async_fn() { |
深入理解Rust的Atomic及Ordering
之前提到的Mutex
、Condvar
是Rust
中比较偏高层的共享数据型并发控制,更底层的并发控制也有,比如Atomic
(原子操作)。
今天结合代码来深入聊聊Atomic
及其相关的Ordering