rust

分类下相关文章

Windows 11 上通过国内源安装 Rust

下载 首先,从 Rust 官方网站下载 rustup-init.exe 64 位安装包。 https://www.rust-lang.org/tools/install 网络连接错误 但是直接点击 rustup-init.exe 进行安装,会报错。大意是网络无法连接。 这个跟之前在 Linux 上安装 rust 是一样的问题,被网址被国内和谐了。 info: profile set to 'default' info: default host triple is x86_64-pc-windows-msvc info: syncing channel updates for 'stable- ...

阅读全文...

rust 框架 loco 源码阅读:loco-cli 代码生成模版机制

主要是想了解一下 loco-cli 是如何通过命令行生成代码文件的。 因为我非常想基于 rust 来实现 android,或者 golang CRUD 之类的模板代码生成。特别是,对既有文件进行插入修改的策略。 逻辑代码 https://github.com/loco-rs/loco/blob/master/loco-cli/src/generate.rs 模板代码 以包含了 CRUD api 及 route 的 controller 模板为例: https://github.com/loco-rs/loco/blob/master/src/gen/templates/scaffold/api ...

阅读全文...

升级 rust 到最新版本

今天在安装 rust loco-cli 时,发现系统上的 rust 版本太低,无法安装相关依赖: package clap_derive v4.5.0 cannot be built because it requires rustc 1.74 or newer, while the currently active rustc version is 1.73.0 看了一下版本,确实是 1.73.0 版本。 $ cargo --version cargo 1.73.0 (9c4383fb5 2023-08-26) 升级命令 rustup update 执行之后,就能看到所有 rust ...

阅读全文...

Rust web 框架 axum (五): 每个功能独立一个文件

之前为了练手把所有的 Axum rust 代码都写在 main.rs 这一个主文件中。 随着功能的增多,发现几点不便: 代码行数过多,不方便查找指定功能的代码 不同功能的类似数据结构需要分别定义,为了避免重名,增加了功能名前缀,但是带来的影响是类型名过长,代码丑陋无比 新增功能时,复制/修改既有代码也不方便 目标 一个 Axum 项目中,有多个子功能,每个子功能在不同的文件中实现。 契机 正好在写枯燥无比的 Android 界面代码时,产生了一个小工具的需求, 即,将 Android 样式代码剥离出 styles.xml 文件,于是在写这个功能的时候, 就顺手将既有的 Axum 项目代码重 ...

阅读全文...

Rust web 框架 axum (四): 生产服务器环境使用 Nginx 部署 axum 服务

这个周末不算忙,总算可以把一直没有上线的 Rust Axum 写的在线小工具发布了。 基本上跟 Golang Gin 的发布流程类似,本地编译好,scp 到服务器上。 然后配置好 systemd, nginx reload 就可以了。 比较省事的地方是 axum 默认会把模板文件打包到二进制文件中,不需要像 golang gin 一样增加额外配置代码。 第一个 Rust 小工具 Rust Axum 小工具: 中文标点替换成对应的英文标点符号 网页地址: https://www.sunzhongwei.com/tools3/replace-chinese-punctuation 编译优化 如果不 ...

阅读全文...

Rust web 框架 axum (三): 使用 askama html 模板

askama 是什么 Askama implements a template rendering engine based on Jinja. It generates Rust code from your templates at compile time based on a user-defined struct to hold the template's context. askama 即一套模板系统,可以集成到 rust 项目中,并不局限于 axum 中,也不局限于 HTML,任何的模板使用场景都是可以的。 类似 golang 内置的模板系统,及 php laravel 中 ...

阅读全文...

Rust web 框架 axum 教程:从入门到遥遥领先

一直想尝试一门不带 GC 的语言,无奈 C 和 C++ 对我来说实在没有应用场景,经典教程也偏远古,无法跟上最新的标准。而 Rust 看起来非常适合我上手,既有完善的包管理工具 Cargo,也有逐渐成熟的应用场景 (我能用到的),比如 GUI 和 Web Server。而且口碑极好。 于是我想从 Web 入手,边学边实现一些网页在线工具,在学习 Rust 的同时,也能解决一些自己的小痛点。对比了几个 Rust web 框架,最终选择了 axum,似乎用过的人都说好。 也许有人会说,写网页用 php,python,java, JS 就够了,为啥要用这么繁琐的 rust 语言。我非常认同 《Rus ...

阅读全文...

Rust web 框架 axum (二): 返回 HTML form 表单,并处理 post 请求

要实现一个小的在线网页工具,最基本的功能就是能够返回一个 HTML form 表单, 让用户能填写数据,然后提交到 rust axum 后台,再将处理后的数据展示出来。 相对 PHP,Python,Go 的 web 框架,Rust 的 web 框架就晦涩很多,下面的示例如果换成其他语言, 在没有任何基础的情况下,估计一小时也能搞定,但是使用 rust axum 这个框架,我还是折腾了一晚上。 主要原因是: axum 的文档太简陋。如果不是 ChatGPT 帮助,我估计给我一天也搞不定。Google 也搜不到太多的资料。 rust 语法晦涩,需要具备大量的基础知识 下面示例实现了一些基本的使 ...

阅读全文...

Rust web 框架 axum (一): 安装及 hello world

为何要尝试 axum 最近在看两本 Rust 的教程,一本在早上上厕所时看,一本在班车上看/睡觉前看。这两个作者确实经验丰富,文笔也非常有趣,比刷抖音愉快多了。是个很好的放松方式。 但是光看不练,学习效率就很低,所以决定一边看书,一边写点 Rust 代码巩固一下。 虽然我对于 Rust 还没有实现的项目用途,但可以写一点 web 小工具,毕竟每天实际工作中每天都会遇到一些繁琐的手动操作需要自动化。之前学习 golang 就是,练手写了一个微信小程序的后台,写完后感觉对 golang 就尽在掌握了。。。这个小程序至今已积累了 30 万用户,日活 2k,也非常有成就感。 axum 简介 axum ...

阅读全文...

计划用 Rust 重构目前的这个博客

目前这个博客是用 PHP 的 Laravel 框架写的,也是在自学 laravel 时的练手项目。 虽然之前用 Golang Gin 重写了一版,但是犯了很多的错误: 管理后台前后台分离,引入了复杂的 React Js 代码,非常想干掉这部分 Tailwind CSS 的使用,现在看代码非常恶心,也想干掉。然后继续使用 Bootstrap 加之目前在学习 Rust,暂时还没有一个明确的目标项目,那么重构博客,就非常适合来练手了。 (当然练手也可以通过将积存的一堆小工具需求来搞) Rust Web 框架选型 暂定 Axum,似乎用了的人都说好,那就从这个入手。 卸下历史包袱 可以从头开发,完 ...

阅读全文...

使用国内源安装 Rust

这段时间写 Android 界面快吐了,极度枯燥,想学习一下 Rust 放松一下心情。于是在 Windows 11 的 WSL Ubuntu 中安装最新版本的 Rust。 下载安装脚本 参考 Rust 官网的新手文档 https://www.rust-lang.org/learn/get-started 在终端命令行中执行 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 但是这个安装过程非常慢,且没有进度条,估计是下载速度不行。 参照网上的做法,可以先下载官方的安装脚本,然后将其中的下载源替换为国内的源即可。 所以 ...

阅读全文...