当前位置: 首页 > news >正文

Rust Web开发常用库

本集合中所有库都是在开源项目中广泛使用且在2024年积极维护的库,排名靠前的库是当前使用比较广泛的,不全面但够用

Rust异步运行时

tokio:异步运行时

async_std:与标准库兼容性较强的运行时

monoio:字节开源

smol:一个小型快速的运行时

RustWeb框架&网络通信

  • 其他Web框架见https://juejin.cn/post/7406997325715554315

axum:注重人体工程学和模块化的 Web 应用程序框架,Tokio团队开源

axum-server:设计用于axumhyper实现

  • HTTP/1 和 HTTP/2
  • 通过rustls或openssl进行 HTTPS
  • 通过hyper来实现高性能
  • 使用tower制作服务 API
  • 对axum有非常好的兼容性

actix:高性能、异步、强大的路由系统和中间件支持

rocket:简洁的语法、强大的类型安全和可扩展性

volo:字节跳动服务框架团队研发的轻量级、高性能、可扩展性强、易用性好的 Rust RPC 框架,借鉴了actix、axum、hyper、tokio、tonic、tower

  • Thrif
  • gRPC

hyper:底层HTTP实现

  • 专注于实现 HTTP 协议本身,包括解析 HTTP 请求和构建 HTTP 响应

tower:用于构建可组合的网络服务的库,Tokio 官方支持的构建异步网络服务中间件框架,Axum,Tower-web,Tonic 这些项目,都广泛使用了 Tower 这层抽象

  • 适用于构建复杂的网络服务架构,需要灵活地组合各种功能模块的场景
  • 适用于需要在不同的网络协议之间进行切换或同时支持多种协议时的场景

tonic:基于 HTTP/2 和 gRPC 服务的库

  • 支持 gRPC 的双向流、一元调用等特性,也可以作为HTTP/2处理使用
  • 适用于需要构建高性能的分布式系统,并且使用 gRPC 或 HTTP/2 进行通信的场景

prost:Protocol Buffers的Rust实现,Tokio出品

  • 支持proto2、proto3

tonic-build:tonic-build可以为 Rust 生成服务端和客户端的代码框架

serde:高效且通用地序列化和反序列化 Rust 数据结构的框架

reqwest:添加重试机制可以提高与外部服务交互的可靠性

ipnet:网络地址转换

mime:Media Type,媒体类型(也通常称为多用途互联网邮件扩展或 MIME 类型)是一种标准,用来表示文档、文件或一组数据的性质和格式

  • application/javascript; charset=utf-8
  • text/css; charset=utf-8

Rust错误处理

anyhow:捕获错误

thiserror:自定义错误

failure:使错误处理更加结构化和可维护

Rust配置管理

dotenvy:设置开发与生产环境,可在.env文件中读取配置

Rust时间和日期

chrono:操作时间日期、时间感知

uuid:生成uuid

Rust数据处理

serde_json:JSON 序列化和反序列化

base64:用于 Base64 编码和解码

hex:十六进制编码和解码

Rust数据验证

validator:数据验证

  • 检查字符串的长度、格式等
  • 验证数字的范围
  • 检查邮箱地址、URL 等格式的正确性

schemars:Json验证

  • 兼容serde

valico:Json验证

Rust图像处理

image:图像处理功能,包括加载、保存、转换图像格式、调整大小、裁剪等

Rust音频处理

rodio:用于音频播放和录制

Rust服务发现、配置管理、服务管理

rnacos:用于与rnacos交互

rs_consul:用于与 Consul 进行交互的 Rust 库。Consul 是一个流行的服务发现和配置管理工具

etcd_client:用于与 etcd 分布式键值存储进行交互,etcd 也可以用于服务发现

zookeeper_client:与 ZooKeeper 进行交互

zookeeper:与 ZooKeeper 进行交互的客户端

serde_yaml_ng:可以用于解析、序列化 YAML 格式的配置文件,结合标准库的文件操作std::fs可以实现配置管理

Rust日志管理、可观测性

tracing:Tokio维护,分布式跟踪的 SDK,全面的、可扩展的跟踪和诊断工具,用于采集监控数据,也可以用作日志,注重跟踪

tracing-subscriber :提供了一组订阅器(subscribers),用于消费和处理 Tracing 生成的事件。订阅器可以用于输出日志到不同的目标,比如控制台、文件等

tracing-appender:Tokio维护,用于将 Tracing 事件输出到不同目标的 appender。它可以帮助将日志记录到文件、标准输出等不同的位置,

tracing-error:将 Rust 的错误类型与 Tracing 的 span 相关联的库

tracing-log:用于将 Tracing 事件转换为标准的 log 框架(如 log crate)事件的工具。这使得 Tracing 可以与其他使用 log 框架的库协同工作

tracing-opentelemetr:提供了一个集成 Tracing 和 OpenTelemetry 的桥梁。它允许将 Tracing 生成的跟踪信息转换为 OpenTelemetry 格式,以便与 OpenTelemetry 的生态系统进行集成

opentelemetry:用于收集分布式系统中的跟踪、指标和日志数据

opentelemetry-otlp:Opentelemetry 的一个组件,用于将跟踪和指标数据发送到 OpenTelemetry Protocol(OTLP)兼容的后端,如 Zipkin、Jaeger 等

slog:功能强大的日志库,支持多种后端,如控制台、文件、系统日志,更注重结构化日志记录

log:基础的日志库,支持不同的日志级别,如error!warn!info!debug!trace!

env_logger:通过读取环境变量来配置日志级别和输出格式,可以结合log使用

clap:以声明式或程序式的方式创建命令行解析器,提供参数行为、帮助生成、用户建议修复、彩色输出、shell补全等命令行功能

Rust与k8s

kube:包含一个 Kubernetes 客户端、一个控制器运行时、一个自定义资源派生和各种工具

Rust数据库

sqlx:异步sql工具包

  • 手动编写 SQL 语句并进行参数绑定
  • 适合对性能有较高要求且需要精细控制 SQL 查询的场景
  • 适合当开发者希望充分利用 Rust 的类型系统来确保数据库操作的正确性时使用
  • 数据库支持
DatabaseVersionDriverURL
MariaDB10.1+mysqlmysql://root:root@localhost:3306
Microsoft SQL Server2019mssql (等待完全重写驱动)
MySQL5.6, 5.7, 8.0mysqlmysql://root:root@localhost:3306
PostgreSQL9.5+postgrespostgres://root:root@localhost:5432
SQLite3.20.1+sqlitesqlite:./sqlite.db?mode=rwc

seaql:查询生成器,支持 MySQL、Postgres 和 SQLite

  • 允许以类型安全的方式构建复杂的 SQL 查询
  • 强调查询的灵活性和可组合性,可以方便地构建动态查询
  • 适用于需要构建复杂 SQL 查询的项目,尤其是那些对查询的灵活性和可维护性要求较高的场景
  • 适用于对不同数据库以统一方式构建查询的场景
  • 数据库支持
DatabaseDriver
MariaDBsqlx-mysql
MySQLsqlx-mysql
PostgreSQLsqlx-postgres
SQLitesqlx-sqlite
rusqliterusqlite

sea-orm:依赖于sqlx,基于seaql构建的异步动态ORM框架,是对seaql的扩展

  • 提供了更全面的对象关系映射(ORM)解决方案

  • 适合希望以面向对象编程(OOP)的方式进行数据库操作的项目

  • 对于大型项目或者需要进行复杂数据库操作和实体关系管理的场景,SeaORM可以提高开发效率

  • 数据库支持

DatabaseURL
MySQLmysql://root:root@localhost:3306
PostgreSQLpostgres://root:root@localhost:5432
SQLite(在文件中)sqlite:./sqlite.db?mode=rwc
SQLite(在内存中)sqlite::memory:

Rust AI

burn:用 Rust 构建的极高的灵活性、计算效率和可移植性的深度学习框架,是一个高级别的机器学习框架,可以用如Candle这类低级别的深度学习框架作为后端

  • WGPU (WebGPU):跨平台 GPU 后端
  • Candle:使用 Candle 绑定的后端
  • LibTorch:使用 LibTorch 绑定的后端
  • NdArray:使用 NdArray 原语作为数据结构的后端
  • autodiff:将反向传播引入任何后端的后端装饰器
  • Fusion:将内核融合引入支持它的后端的后端装饰器

candle_core:Huggingface维护的机器学习框架

相关文章:

Rust Web开发常用库

本集合中所有库都是在开源项目中广泛使用且在2024年积极维护的库,排名靠前的库是当前使用比较广泛的,不全面但够用 Rust异步运行时 tokio:异步运行时 async_std:与标准库兼容性较强的运行时 monoio:字节开源 smol…...

ios内购支付-支付宝APP支付提现

文章目录 前言一、IOS内购支付(ios订单生成自己写逻辑即可)1.支付回调票据校验controller1.支付回调票据校验server 二、安卓APP支付宝支付1.生成订单返回支付宝字符串(用于app拉起支付宝,这里用的是证书模式)2.生成订…...

新课发布|鸿蒙HarmonyOS Next商城APP应用开发实战

2024年年初,鸿蒙HarmonyOS Next星河版强势发布,随着鸿蒙系统的普及和应用场景的拓展,市场需求将持续增加。鸿蒙系统已经应用于华为的智能手机、平板电脑、智能家居等多个领域,并有望在未来拓展到智能汽车、物联网等更多领域。这为…...

基于Java,SpringBoot,Vue智慧校园健康驿站体检论坛请假管理系统

摘要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱,出错率高,信息安全性差&#xf…...

【数据分享】2001-2023年我国省市县镇四级的逐月平均气温数据(免费获取/Shp/Excel格式)

之前我们分享过1901-2023年1km分辨率逐月平均气温栅格数据,该数据来源于国家青藏高原科学数据中心。为方便大家使用,我们还基于上述平均气温栅格数据将数据处理为Shp和Excel格式的省市县三级逐月平均气温数据(可查看之前的文章获悉详情&#…...

c#代码介绍23种设计模式_16迭代器模式

目录 1、迭代器模式的介绍 2、迭代器模式的定义 3、迭代器模式的结构 4、代器模式角色组成 5、迭代器实现 6、迭代器模式的适用场景 7、迭代器模式的优缺点 8、.NET中迭代器模式的应用 9、实现思路 1、迭代器模式的介绍 迭代器是针对集合对象而生的,对于集合对象而言…...

408算法题leetcode--第23天

236. 二叉树的最近公共祖先 236. 二叉树的最近公共祖先\思路:递归,如注释时间和空间:O(n) /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) …...

帝国CMS系统开启https后,无法登陆后台的原因和解决方法

今天本地配置好了帝国CMS7.5,传去服务器后,使用http访问一切正常。但是当开启了https(SSL)后,后台竟然无法登陆进去了。 输入账号密码后,点击登陆,跳转到/e/admin/ecmsadmin.php就变成页面一片…...

根据视频id查询播放量

声明:文章仅用于学习交流,如有侵权请联系删除 如何根据视频ID查询视频的播放数量 在数字化时代,视频内容的消费已成为人们日常生活的重要组成部分。无论是社交媒体平台上的短视频,还是视频分享网站上的长视频,了解视频的播放数量…...

初始爬虫11

1.斗鱼selenium爬取 # -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By import timeclass Douyu(object):def __init__(self):self.url https://www.douyu.com/directory/allself.driver webdriver.Chrome()self.driver…...

SSY20241002提高组T4题解__纯数论

题面 题目描述 有一天 p e o p 1 e peop1e peop1e 学长梦到了一个丑陋的式子: ∑ i 1 n ( ∑ m 1 R F m ) ! i ! ∑ l 0 i ∑ j 0 ∑ t 1 R F t { K i − l } l ! { i ∑ w 1 R F w − j } j ! \sum_{i1}^n (\sum_{m1}^R F_m)!\times i!\times \sum_{l…...

Python:lambda 函数详解 以及使用

一、lambda 语法 lambda 函数的语法只包含一个语句,表现形式如下: lambda [arg1 [,arg2,.....argn]]:expression 其中,lambda 是 Python 预留的关键字,[arg…] 和 expression 由用户自定义。 具体如下: [arg…] 是参数列表&#…...

【C++】空指针和野指针

文章目录 1.空指针2.野指针总结 1.空指针 概念:指针变量指向内存中编号为0的空间。 用途:初始化指针变量。 注意:空指针指向的内存是不可以访问的。 示例: int main(){//指针变量p指向内存地址编号为0的空间int *PNULL&#…...

大模型提示词

纯输入版提示工程词 输出一个九九乘法口诀表 当然可以!以下是九九乘法口诀表: 1 x 1 1 1 x 2 2 2 x 2 4 1 x 3 3 2 x 3 6 3 x 3 9 1 x 4 4 2 x 4 8 3 x 4 12 4 x 4 16 1 x 5 5 2 x 5 10 3 x 5 15 4 x 5 20 5 …...

在线css像素px到Em的转换器

具体请前往:在线Px转Em工具--将绝对像素(px)长度单位转换为相对长度em...

回溯算法解决排列组合及子集问题

216. 组合总和 III39. 组合总和40. 组合总和 II46. 全排列47. 全排列 II77. 组合 78. 子集 90. 子集 II 以上是力扣设计相关问题的题目。排列组合还是子集问题无非就是从序列 nums 中以给定规则取若干元素,主要有以下几类: 元素无重不可复选&#xff0…...

Unity中Mesh多种网格绘制模式使用方法参考

Unity中MeshFilter中的Mesh默认情况下使用MeshTopology.Trigangles类型绘制网格,就是通常的绘制三角形网格,实际上Mesh有五种绘制模式,对应MeshTopology的枚举,分别是 Triangles网格由三角形构成。Quads网格由四边形构成。Lines网…...

【Spring Security】基于SpringBoot3.3.4版本②如何配置免鉴权Path

基于Spring Boot 3.3.4,详细说明Spring Security 6.3.3的使用 摘要本地开发环境说明SecurityFilterChain介绍application.ymlWen3SecurityProperties.java修改DemoWen3Security修改SecurityFilterChainIgnoredPathController.javaIgnoredPathController2.java启动工程测试测试…...

信息学奥赛复赛复习11-CSP-J2020-04方格取数-动态规划、斐波那契数列、最优子结构、重叠子问题、无后效性

PDF文档回复:20241004 1 P7074 [CSP-J2020] 方格取数 [题目描述] 设有 nm 的方格图,每个方格中都有一个整数。现有一只小熊,想从图的左上角走到右下角,每一步只能向上、向下或向右走一格,并且不能重复经过已经走过的方格&#x…...

Hive数仓操作(十二)

一、Hive 中的行列转换 1. 行转列: collect_list() collect_list() 函数用于将一个列中的数据收集成一个数组。 示例数据文件 假设有一个名为 orders.txt 的文件,内容如下: 1,101 1,101 1,103 2,104 2,105导入数据到 Hive 表 首先&…...

大话软工笔记—需求分析概述

需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)&#xff0…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...

comfyui 工作流中 图生视频 如何增加视频的长度到5秒

comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗? 在ComfyUI中实现图生视频并延长到5秒,需要结合多个扩展和技巧。以下是完整解决方案: 核心工作流配置(24fps下5秒120帧) #mermaid-svg-yP…...