Rust小项目:用Rust写一个端口扫描器
Rust作为一门通用编程语言,系统级的编程语言写个端口扫描器并不是太复杂,所以本文也会将太多的精力放在怎么扫描上,而是更多的时间放在如何利用Rust快速的扫描和探测端口,即尽可能高并发的完成这个任务,本文从单线程到多线程,最后到异步,算是一个练手项目吧。
Rust作为一门通用编程语言,系统级的编程语言写个端口扫描器并不是太复杂,所以本文也会将太多的精力放在怎么扫描上,而是更多的时间放在如何利用Rust快速的扫描和探测端口,即尽可能高并发的完成这个任务,本文从单线程到多线程,最后到异步,算是一个练手项目吧。
虚假的全栈开发,前端后端分离然后分别使用不同的编程语言来开发前后端,真实的全栈开发,前后端全用Rust编程语言,无需打开两个项目分别维护,本文使用的技术栈是Leptos
, tailwindcss
, trunk
。
Rust支持两种宏,一种是声明宏,一种是过程宏,前者相较于后者还是比较简单的。本文主要是讲解Rust元编程里的声明宏,通过声明宏可以减少一些样板代码,它是一个用代码生成代码的技术。
编程过程中有许多类型的数据要处理,其中文本处理必不可少,本文主要是记录在使用Rust开发的过程中处理文本相关数据的一些代码,而文本可以分为结构化和非结构化的文本,比如JSON和小说文本(没有固定格式的文本)。
本文主要讨论axum
的测试,axum
对于测试的支持还是比较完善的,我们可以测试状态码,HTTP头信息,响应体等内容,因为框架实现的原因,其实axum
很依赖tower
。
一个总是在线的服务还是很有吸引力的, 通过shuttle
可以托管自己的rust应用, 对于资源要求不多的应用或者仅仅简单的测试还是很有用的。
本文主要讨论axum
的中间件,这也是axum
与其他rust web框架极大的不同点,其他框架都定义了自己的接口,而axum
直接使用tower
的Servvice
和layer
的概念, 而tower
已经存在一大堆通用的中间件了,所以axum
也就自带了一大堆开箱即用的中间件。
本系列文章主要是用Rust
的ethers-rs
来复刻《用Go来做以太坊开发》这本书本的内容,所以本系列文章的标题叫做《用Rust来做以太坊开发》, 因为原书写得足够好了,所以本系列更多的只是代码层面的复刻,不会说明太多相关的基础知识。
本文主要讨论axum
的路由,通过路由我们可以灵活的来将不同的请求路径路由到不同的handler,也能自由的组合不同的路由对象来处理请求。
本系列文章主要是用Rust
的ethers-rs
来复刻《用Go来做以太坊开发》这本书本的内容,所以本系列文章的标题叫做《用Rust来做以太坊开发》, 因为原书写得足够好了,所以本系列更多的只是代码层面的复刻,不会说明太多相关的基础知识。