用Axum替换Nginx
文章首先简单介绍了Axum的基本用法,如何创建路由、处理器等。然后展示了如何使用Axum托管一个简单的静态网站,只需几行代码。
接着,文章阐述了如何使用Axum托管两个不同子域名的静态网站,通过解析主机名来路由到不同的服务。代码通过判断是否提供"--production"参数来决定使用实际域名还是本地测试域名。
最后,作者将路由逻辑抽取到一个单独函数中,使main函数更加清晰,并使用BoxCloneService来简化Service trait的使用。
总的来说,这篇文章向读者展示了如何使用Axum框架编写功能丰富但代码简洁的Web服务,以替代配置复杂的Nginx反向代理。Axum利用Rust的高性能特性,同时提供了清晰直观的API,是构建Web服务的不错选择。
https://felix-knorr.net/posts/2024-10-13-replacing-nginx-with-axum.html
Clavis - 在异步流上进行安全加密通信
Clavis是一个Rust库,用于在异步流上进行安全加密通信。它利用X25519进行密钥交换,AES-256-GCM-SIV进行加密,确保传输数据的机密性和完整性,同时提供简单高效的API。
该库提供了定义自定义数据包类型的宏,支持无缝的数据序列化和反序列化。它展示了如何建立客户端和服务器之间的加密连接,发送和接收自定义数据包。该库提供了完整的API文档,涵盖了各种模块、结构体和函数,以充分利用Clavis的功能。该项目遵循MIT许可协议。
https://github.com/pyrohost/clavis
如何在嵌入式系统上运行 Rust 代码
本文是一个三部分系列的最后一篇,旨在讲解如何在嵌入式系统上运行 Rust 代码。作者通过将自己的 range-set-blaze 项目移植到 no_std 环境的实践,总结出了9条规则:
- 确保你的项目可以在 WASM WASI 和浏览器 WASM 环境下运行,因为这些环境与嵌入式环境有类似的约束。
- 使用 thumbv7m-none-eabi 目标和 cargo tree 命令来识别并修复不兼容 no_std 的依赖项。
- 在主代码中添加 #![no_std] 和 extern crate alloc;,并将 std:: 替换为 core:: 和 alloc::。
- 使用 Cargo 特性让主代码有条件地使用 std,以保留文件相关等功能。
- 理解测试代码始终使用标准库的原因。
- 创建一个简单的嵌入式测试项目。
- 使用 QEMU 运行测试。
- 在 Cargo.toml 中为 WASM 和 no_std 添加关键词和类别。
- 可选地使用预分配的数据类型避免使用 alloc。
- 在持续集成测试中添加 thumbv7m-none-eabi 和 QEMU 目标。
通过遵循这些规则,开发者可以顺利地将 Rust 代码移植到资源受限的嵌入式系统中运行。
https://medium.com/towards-data-science/nine-rules-for-running-rust-on-embedded-systems-b0c247ee877e
--
From 日报小组 Mike
社区学习交流平台订阅:
评论区
写评论还没有评论