当前位置: 首页 > 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 表 首先&…...

计算机毕业设计 基于SpringBoot和Vue的课程教学平台的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...

有状态(Session) VS 无状态(Token)

目录 概念 JWT Token在项目中使用 概念 有状态和无状态服务是两种不同的服务架构,两者的不同之处在于对于服务状态的处理。 1、有状态服务 是指程序在执行过程中生成的中间数据,服务器端一般都要保存请求的相关信息,每个请求可以默认地使…...

天坑!Spark+Hive+Paimon+Dolphinscheduler

背景: 数据中台项目使用Spark+Hive+Paimon做湖仓底层,调度任务使用的是基于Dolphinscheduler进行二开。在做离线脚本任务开发时,在Paimon库下执行非查询类SQL报错。 INSERT报错 DELETE报错 现状: 原始逻辑为数据中台中选择的Paimon数据源,实际上在Dolphinscheduler中是…...

JAVA——IO框架

目录 一、框架 二、导入框架步骤 三、测试 一、框架 框架就是为了解决某类问题,编写的一套类、接口等。大多数框架都是第三方研发的 好处: 在框架的基础上开发,提高开发效率 框架的形式:一般是把类、接口编译成class形式,再…...

项目管理系统如何实现项目申报流程自动化?

传统的项目申报流程往往繁琐复杂,涉及众多环节和部门间的协作,不仅耗时费力,还容易因人为疏忽而导致错误或延误。随着信息技术的飞速发展,项目管理系统的出现为项目申报流程的自动化提供了可能,极大地提升了申报效率和…...

ndb9300public-ndb2excel简介

1 引言 ndb9300是一个自己定义的机载导航数据库劳作(不敢称为项目)代号,其中3表示是第3种数据库。 多年前,对在役民航客机中的某型机载导航数据库的二进制文件进行分析,弄明白它的数据结构后做了几个工具&#xff0c…...

C++:const成员

const修饰成员变量,要在初始化列表中进行初始化。 const修饰成员函数,要放在函数后,称为常函数。常函数不能修改普通成员变量。 const修饰的对象,称为常对象。常对象不能修改普通成员变量,只能读取。 常对象只能使用…...

基于ROS的激光雷达点云物体检测

环境 RTX 2060(后面关于算力) ubuntu 18.04 ROS melodic (ubuntu 18.04安装ROS melodic可以参看我这篇文章ubuntu 18.04安装ROS系统) CUDA 10.0 cudnn 7.6.5 caffe cmake 3.18.0(不能低于3.12.2) opencv 3…...

大模型训练环境搭建

硬件资源说明 本教程基于GPU 3090的服务器 资源类型 型号 核心指标 CPU Intel(R) Xeon(R) Bronze 3204 CPU 1.90GHz 12核 内存 / 125Gi GPU NVIDIA GeForce RTX 3090 24G显存 注意:接下来的部分命令需要使用科学上网,需要事先配置好。 安…...

使用Java调用GeoTools实现全球国家矢量数据入库实战

目录 前言 一、相关数据介绍 1、无空间参考的数据 2、有空间参考的数据 3、空间信息表物理模型 二、全球国家空间数据入库 1、后台实体类图 2、后台实体对象关键代码 三、时空数据入库实践 1、读取无空间参考数据 2、入库成果及注意事项 四、总结 前言 在当今世界&…...