
《Rust云原生之路》
文章平均质量分 69
用 Rust 打造云原生生态体系。
探路人
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二十一、Rust 反射 获取类型
Any Trait 并非常规意义上的 Reflection,而最多是编译期反射、且只启用了 “类型检查” 和 “类型转换”,并不检查结构的任意内容。Any 符合零成本抽象,因为Rust只会针对调用该函数的相关类型生成代码,并且返回的是编译器内部的类型ID,没有额外开销;甚至可以直接使用,从而没有了dyn any的动态绑定开销。虽然 Rust 没有真正的 运行时 Reflection,但使用过程宏、仍可以实现大部分反射能够实现的功能,如上一节的 AOP 增强!!就这样,bye bye ~原创 2024-04-04 16:30:58 · 2595 阅读 · 1 评论 -
二十、Rust AOP 切面增强
通过syn和quote,可以在编译期,操纵整个 rust 代码的 AST 树,为功能编写、甚至框架封装,提供了更多可能!完事,拜了个 bye ~参考资料如何编写一个过程宏(proc-macro)Rust过程宏系列教程 | Proc Macro Workshop 之 Builder 实现Macro 宏编程。原创 2024-04-04 12:32:40 · 1677 阅读 · 0 评论 -
十九、Rust Tcp Rpc 示例
前一篇,我们演示了 rust grpc 的应用,但 grpc 是基于 http 的,按理说其协议更重,同时也确见到网友验证过,相比 http 的 rpc,tpc 下的 rpc 性能确实更有优势。 同时,不同于 grpc 要编写一份 “中间文件” (protobuf 文件),tcp rpc 可以认为是 直接 rust 到 rust 的编程,没有 “中间文件” 的编写,编写期代码提示,语法校验,都是原生的。因此,本篇也进行一个 tcp rpc 的演示。Tcp 版 rpc 方案不多,本例直接使用 tarpc原创 2024-04-04 12:29:06 · 1075 阅读 · 2 评论 -
十八、Rust gRPC 多 proto 演示
创建 proto 目录,并声明相应的服务;由于网上的资料大多都是一个 proto 文件,而实际项目中基本上都是具有层级结构的;因此这里我也使用了多个 proto 文件来演示;在;而在和中都引入了他;原创 2024-04-02 11:40:34 · 1445 阅读 · 0 评论 -
十七、Rust集成MQTT Client
本次集成作为 Client 使用,选择了最前面的。代码贴完,剩下真是没啥可说的,拜了个 bye ~原创 2023-11-21 13:57:24 · 1510 阅读 · 0 评论 -
十六、Vert.x、Actix-web、Warp、Axum 性能对比
本篇整理自国外大佬的一个视频,整理成文,方便随时查看。测试机,16核,32G内存。大佬进行了两种测试,下面分开整理。原创 2022-07-29 19:57:11 · 8020 阅读 · 4 评论 -
十五、Rust SeaFile
今天介绍一款笔者自己开源的,类似私有云的软件SeaFile。与时下其他私有云软件不同的是,不需要先搭建云平台,再由用户界面上传资料,才能进行资料的管理,SeaFile可以对已存在资料建立DB索引,并提供快速检索能力。...原创 2022-07-27 19:53:20 · 835 阅读 · 0 评论 -
十四、Rust ORM 框架
Rust下的orm,之前笔者介绍过sqlx,但使用中发现sqlx在进行参数绑定时,使用的是宏,在当前的IDE生态环境下,有时不能很好的进行代码提示,或代码跟踪,所以今天再介绍另一款rust下的orm工具。~......原创 2022-07-24 19:02:24 · 5240 阅读 · 0 评论 -
十三、Rust 借用、Struct、闭包 - 技巧与语法糖
1、引用与借用不可变的引用,就是借用。2、可变 + 不可变不可以同时出现可变 加不可变借用。以下两种,都是不可以的。let mut s = String::from("Hello World");let s3 = &mut s; // 这里是不可以的let s1 = &s;let s2 = &s;println!("{}, {}, {}", s1, s2, s3);let mut s = String::from("Hello World");let原创 2021-12-20 19:45:53 · 861 阅读 · 0 评论 -
十二、Rust + Lettre 发送邮件
十二、Rust 雪花主键生成器原创 2020-11-18 17:55:38 · 3832 阅读 · 0 评论 -
十一、Actix-web 拦截器中间件
十一、Actix-web 拦截器中间件 在编写 web 项目时,对于登录状态,或权限的 “拦截器” 是必不可少的,本节我们来看看 actix-web 中对 http 的请求的策略拦截。 actix-web 中的 “拦截器” 是通过 middleware 来实现的。首先来定义一个中间件,其中大部分为模板代码,从 actix-web 的 middleware 源中都可以找到。最重要的是底部的 fn call(&mut self, req: ServiceRequest) ->原创 2020-09-13 03:35:54 · 3585 阅读 · 9 评论 -
十、Rust 集成日志工具
十、Rust 集成日志工具原创 2020-09-08 16:41:30 · 2048 阅读 · 0 评论 -
九、用 Sqlx 访问数据库
九、用 Sqlx 访问数据库 前一节,我们学习了如何在 Rust 项目中集成 Sqlx,本节我们继续完善该工程,以看看如何用 Sqlx 来具体的访问数据库。 1、目录结构.├── Cargo.lock├── Cargo.toml├── README.md├── config.yaml└── src ├── boot │ ├── db.rs │ └── mod.rs ├── main.rs └── module原创 2020-09-03 23:13:24 · 1471 阅读 · 3 评论 -
八、Rust 集成 Sqlx
八、Rust 集成 Sqlx Rust 语言级异步,是 xxx 版添加进来的特性。如果只是需要一款支持异步的连接池工具,推荐 tokio-postgres、deadpool-postgres。而用于生产工序,还是需要 ORM 的加入。本节我们来学习一下 sqlx。1、集成 Sqlx1)追加依赖:Cargo.tomlserde_yaml = "0.8.13"sqlx = {version = "0.4.0-beta.1", default-features = false, features原创 2020-09-03 21:25:08 · 3064 阅读 · 2 评论 -
七、Rust 构建提速
七、Rust 构建提速 经过上一篇的案例,细心的读者应该已经注意到,Rust 的构建文件都放在了项目的 target 目录下,如果多个项目使用相同的依赖,依赖要完全重新编译,耗时还是挺久的。本节,我们学习使用 mozilla/sccache 来加速 Rust 构建过程。 以 zsh 为例# CentOS 等 Linux 需先安装: yum install -y gcc openssl-develcargo install sccachecat >> ~/.zshrc &原创 2020-09-03 19:24:02 · 1690 阅读 · 1 评论 -
六、用 Actix-web 构建异步 web工程
六、用 Actix-web 构建异步 web工程 目前 Rust 的 web 框架已经有挺多了,考虑到可靠性,异步化,结构化,流行速度,使用简单,等多方面因素后,这里笔者最终选择了 actix-web。本节一起来看下 actix-web 的使用情况。 用 CLion 打开之前的工程。首先,来看一下项目结构:.├── Cargo.toml├── README.md└── src ├── main.rs └── module ├── mod.rs原创 2020-09-03 01:51:56 · 1891 阅读 · 0 评论 -
五、Cargo 初识
五、Cargo 初识 Cargo 是 Rust 官方的工程脚手架,和依赖管理工具,作为工作脚手架 cargo new xxx ,我们在 hello world 小节已经了解了。本节来看看其在依赖管理方面的应用。 在由脚手架创建的工程中,通常都会有一个 Cargo.toml 文件,其中有一个 [denpendencies] 节点,用于指定 crate 的名称以及版本。比如,以下是笔者的一份 Cargo.toml。[package]name = "actix-web-deadpool"原创 2020-09-02 20:09:11 · 811 阅读 · 0 评论 -
四、Rust IDE 选择
四、Rust IDE 选择 目前 Rust 开发,仍然没有专用 IDE,大家都还是以各种编辑器,添加插件来开展工作的。如图,一份 歪果人 整理的列表: 可以看到 IntelliJ、VScode 对 Rust 的支持是比较好的,值得提出的是,IntelliJ 家 IDEA 等,通过安装 Rust 插件,都能进行 Rust 编码、提示、高亮,但只有 CLion 支持 debug 等断点调试。 这里笔者选择的是 CLion: Open => rust-dem原创 2020-09-02 16:37:19 · 12356 阅读 · 8 评论 -
三、Rust Hello World
三、Rust Hello World 无论学什么语言,多动手都是第一位的,本节 我们就来写个 Hello World ! 。1、建工程cargo new rust-demo2、编码cd rust-demovim src/main.rs 会发现,其实已经初始化好 Hello World 代码了,这里我们先看看就好,也可以尝试改改输出内容,感受一下。fn main() { println!("Hello, world!");}3、编译rustc src/mai原创 2020-09-01 22:02:46 · 366 阅读 · 0 评论 -
二、Rust安装及国内加速
二、Rust安装及国内加速 这一节我们来看 Rust 的安装,主要涵盖 Mac、CentOS(同样适用于 Aliyun Linux 2)。1、安装 RustMacOS 以 zsh 为例brew install rustuprustup update stable 并添加环境变量PATH=$HOME/.cargo/bin:$PATHCentOS 以 zsh 为例echo '''export RUSTUP_DIST_SERVER=https原创 2020-09-01 18:29:16 · 3678 阅读 · 1 评论 -
一、新起点 Rust
转眼,又没日没夜的工作了两年,最近有些空档,加上要起动一个小项目,回顾了这二年的技术脉络,总觉得哪里不对。 这两年原创 2020-09-01 01:10:03 · 670 阅读 · 0 评论