Rust-Rocket框架笔记

2023-11-16

Rust-Rocket框架笔记

Rocket-Learn-doc

  • createTime:20230430
  • author:syf20020816@outlook.com
  • email:syf20020816@outlook.com

Rocket Addr

地址:https://rocket.rs/v0.5-rc/guide/introduction/

视频地址

https://www.bilibili.com/video/BV14h41177Ga/?spm_id_from=333.999.0.0&vd_source=9c2ae08297163e79152407c969f04717

What is Rocket

Rocket是Rust的Web框架。如果你愿意,你可以把火箭看作是一个更灵活,更友好支持热插拔,我们更愿意把火箭看作是一种新的东西。Rocket的目标是快速、简单和灵活,同时尽可能提供有保证的安全性。更重要的是,Rocket还致力于成为乐趣,它通过确保您编写尽可能少的代码来完成任务来实现这一点。

Rocket的设计围绕着三个核心理念:

  • 安全性、正确性和开发人员体验至关重要。

    阻力最小的路径应该会引导您获得最安全,最正确的Web应用程序,尽管安全性和正确性不应该以降低开发人员体验为代价。Rocket易于使用,同时采取了很好的措施来确保您的应用程序是安全和正确的,而无需认知开销。

  • 所有请求处理信息都应该是类型化的,并且是独立的。

    因为Web和HTTP本身是无类型的(或弦地 类型的,正如一些人所说的那样),这意味着某些东西或某人必须将字符串转换为本地类型。Rocket可以为你做到这一点,而且编程开销为零。更何况,火箭的请求处理是自足的 零全局状态:处理程序是具有常规参数的常规函数。

  • 不应强迫作出决定。

    模板、序列化、会话以及几乎所有其他组件都是可插拔的可选组件。虽然Rocket对每一个都有官方支持和库,但它们是完全可选和可交换的。

这三个想法决定了Rocket的界面,你会发现它们都嵌入了Rocket的核心功能

QuickStart

下载Rocket-Rust

git clone https://github.com/SergioBenitez/Rocket
cd Rocket/examples/hello
cargo run

运行Rust-Rocket-Hello-错误-端口占用

Configured for debug.
   >> address: 127.0.0.1
   >> port: 8000
   >> workers: 8
   >> max blocking threads: 512
   >> ident: Rocket
   >> IP header: X-Real-IP
   >> limits: bytes = 8KiB, data-form = 2MiB, file = 1MiB, form = 32KiB, json = 1MiB, msgpack
 = 1MiB, string = 8KiB
   >> temp dir: C:\Users\SYF200~1\AppData\Local\Temp\
   >> http/2: true
   >> keep-alive: 5s
   >> tls: disabled
   >> shutdown: ctrlc = true, force = true, grace = 2s, mercy = 3s
   >> log level: normal
   >> cli colors: true
Routes:
   >> (hello) GET /?<lang>&<opt..>
   >> (wave) GET /wave/<name>/<age>
   >> (mir) GET /hello/мир
   >> (world) GET /hello/world
Fairings:
   >> Shield (liftoff, response, singleton)
   >> Compatibility Normalizer (request)
Error: Rocket failed to bind network socket to given address/port.
   >> 以一种访问权限不允许的方式做了一个访问套接字的尝试。 (os error 10013)
thread 'main' panicked at 'aborting due to socket bind error', E:\Rust\rocket_learn\Rocket\co
re\lib\src\error.rs:204:17
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
error: process didn't exit successfully: `E:\Rust\rocket_learn\Rocket\examples\target\debug\h
ello.exe` (exit code: 101)

解决

查看端口占用情况

netstat -ano |findstr 8000

添加Rocket.toml配置文件更改Rocket默认启动端口

在这里插入图片描述

添加如下内容修改默认端口:

[default]
address = "127.0.0.1"
port = 8080

启动成功

Configured for debug.
   >> address: 127.0.0.1
   >> port: 8080
   >> workers: 8
   >> max blocking threads: 512
   >> ident: Rocket
   >> IP header: X-Real-IP
   >> limits: bytes = 8KiB, data-form = 2MiB, file = 1MiB, form = 32KiB, json = 1MiB, msgpack
 = 1MiB, string = 8KiB
   >> temp dir: C:\Users\SYF200~1\AppData\Local\Temp\
   >> http/2: true
   >> keep-alive: 5s
   >> tls: disabled
   >> shutdown: ctrlc = true, force = true, grace = 2s, mercy = 3s
   >> log level: normal
   >> cli colors: true
Routes:
   >> (hello) GET /?<lang>&<opt..>
   >> (wave) GET /wave/<name>/<age>
   >> (mir) GET /hello/мир
   >> (world) GET /hello/world
Fairings:
   >> Compatibility Normalizer (request)
   >> Shield (liftoff, response, singleton)
Shield:
   >> Permissions-Policy: interest-cohort=()
   >> X-Frame-Options: SAMEORIGIN
   >> X-Content-Type-Options: nosniff
Rocket has launched from http://127.0.0.1:8080

访问:127.0.0.1:8080/?emoji&lang=en
在这里插入图片描述

GetStart-Hello world

创建项目

cargo

cargo new hello-rocket

IDEA

在这里插入图片描述

在这里插入图片描述

添加依赖

[dependencies]
rocket = "=0.5.0-rc.3"

添加Rocket.toml配置文件

[default]
port = 8080

main.rs

#[macro_use] extern crate rocket;

#[get("/index")]
fn index()->&'static str{
    "									
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rust-Rocket框架笔记 的相关文章

  • VacantEntry 未在名为 set 的范围内实现任何方法

    这段代码 use std collections hash map Entry Occupied Vacant use std collections HashMap fn main let mut vars HashMap
  • 为外国类型实现外国特征[重复]

    这个问题在这里已经有答案了 因此 我认为出于前向兼容性考虑 以防止在库中添加进一步的特征实现破坏使用类型特征的地方 有理由禁止孤立特征实现 并且它可能使编译变得更加困难 但我想知道 Rust 社区认为哪种解决方法是最理想的 以防万一这还不够
  • 如何重载“新”方法?

    我刚刚开始学习 Rust 我想知道是否有方法重载方法 首先 我创建了一个结构并使用 impl 来实现基本的 新 方法 然后我想添加带有一些参数的 新 方法 并且我尝试使用 Trait 来实现这一点 以下代码已成功编译 但是当我尝试将 new
  • 如何从特征对象中获取 Any:downcast_ref 的所有权?

    我遇到了与 Rust 的所有权规则和特质对象向下兼容的冲突 这是一个示例 use std any Any trait Node fn gen self gt Box
  • 为什么这不是悬空引用?

    我正在关注第二版TRPL 书 https doc rust lang org book second edition 第二版 并且对其中一项任务有点困惑 在 的最后第10 2节 https doc rust lang org book se
  • 在编译时检查指针大小

    我发现类似的问题编译时泛型类型大小检查 https stackoverflow com questions 30330519 compile time generic type size check 但没有收到任何答复 问题是通过FFI u
  • Rust:根目录中没有“模块”

    当我跑步时use crate feed in src cmdline rs我希望导入src feed rs 但事实并非如此 相反我得到 error E0432 unresolved import crate feed gt src cmdl
  • 为什么 String 不实现 From<&String>?

    背景 我知道 Rust 人们更喜欢 str而不是 String 但在某些情况下我们只得到 String 一个例子是当你打电话时std iter Iterator peekable 返回值是一个Peekable i 将原始迭代器包装到其中并为
  • 从所有者对象读取时可变的自身

    我有一个对象拥有另一个对象 拥有的对象有一个可变方法 该方法依赖于其所有者的非可变方法 架构 尽可能简化 如下所示 struct World animals Vec
  • 如何对另一个数字进行模运算而不溢出?

    我正在尝试为 Rust 实现快速素性测试u32 and u64数据类型 作为其中的一部分 我需要计算 n n d where n and d are u32 or u64 分别 虽然结果可以很容易地适合数据类型 但我不知道如何计算它 据我所
  • 如何使用diesel-rs选择色谱柱的子集?

    我现在花了几个小时的时间来查询表的可用列的子集以及在其中包含计算 我知道这不是在选择查询中执行计算的最佳方式 但现在 我只是在开发一个原型 它应该是可行的 我在用diesel rs作为后端实现中所有数据库操作的 ORM 数据将存储在 Pos
  • 仅当处于发布模式时,我如何在没有窗口的情况下运行 Rust 程序[重复]

    这个问题在这里已经有答案了 我目前正在开发一个 Rust 项目 并且经常需要调试和部署它 虽然它已部署 但它在后台运行 没有窗口 但当我调试时 我想要一个窗口来查看是否存在任何运行时错误 我目前使用 windows subsystem wi
  • Box、ref、&、*的理解及关系

    我对 Rust 中的指针如何工作有点困惑 有ref Box 而且我不确定他们如何一起工作 目前我的理解是这样的 Box并不是真正的指针 它是一种在堆上分配数据并在函数参数中传递未调整大小的类型 尤其是特征 的方法 ref在模式匹配中用于借用
  • 如何异步读取文件?

    我可以创建一个单独的线程来充当 I O 队列 但我不确定这是否是最好的方法 看起来是最好的 我不知道如何加载本地文件mio https github com carllerche mio 使用 tokio fs read use tokio
  • 如何关闭某个代码区域而不是单个项目的 rustfmt?

    rustfmt skip 允许您在格式化时跳过代码 块 https github com rust lang rustfmt issues 1322 但这需要把skip在各个 而不是 Clang 风格on off 考虑这段代码 fn add
  • Rust 模式匹配如何确定绑定变量是引用还是值?

    use crate List Cons Nil derive Debug struct Foo derive Debug enum List Cons i32 Foo Nil impl List fn tail self gt Option
  • future::select 之间有什么区别!和东京::选择?

    我正在使用 Tokio 我想接收来自两个不同的请求mpsc队列 select 似乎是要走的路 但我不确定两者之间有什么区别futures select and tokio select 在什么情况下应该使用其中一种而不是另一种 tokio
  • 使用 if 表达式时,“不匹配的类型:预期的 `()`” 是什么意思?

    我尝试在 Rust 中实现 fizzbuzz 但因一些神秘错误而失败 fn main let mut i 1 while i lt 100 println if i 3 0 Fizz if i 5 0 Buzz if i 3 0 i 5 0
  • 我可以有效地从 HashSet 中随机采样吗?

    我有一个std collections HashSet 我想采样并删除一个均匀随机的元素 目前 我正在做的是使用随机抽样索引rand gen range 然后迭代HashSet到该索引来获取元素 然后我删除选定的元素 这可行 但效率不高 有
  • 用于解析 Rust 中的匹配臂的递归宏

    我正在尝试编写一个宏来将一组规则扩展为执行标记匹配的代码 但无法在不导致宏扩展错误的情况下生成正确的代码 我知道我可以通过其他方式处理这个问题 但这里的关键问题不是如何解析令牌 而是如何编写一个可以使用匹配臂递归扩展令牌树的宏 这个想法是我

随机推荐

  • Windows安装子系统Linux

    Windows安装子系统 Linux ubuntu 安装条件 步骤 1 安装WSL命令 2 设置Linux用户名和密码 3 写个简单的 c程序看看 4 如何互传文件 安装条件 Windows 10版本2004及更高的版本才能安装 步骤 1
  • 多模态中的指令控制(InstructPix2Pix,SayCan)

    InstructPix2Pix Learning to Follow Image Editing Instructions 图像的语言指令生成 目的是遵循人工指令去编辑图像 即给定输入图像和一个如何编辑它的文本指令 模型尝试遵循这些指令来编
  • 数据治理:数据治理之道-数据文化-数据思维融入企业文化

    参考 一本书讲透数据治理 数据治理 等 大数据的根本价值在于从数据的不确定性中发现规律 获得确定性 想要在繁杂的大数据中快速找到价值数据 并依靠数据发现 分析 解决 跟踪问题 企业必须有数据思维与数据文化 数字转型 文化先行 数字化趋势下
  • Node.js学习笔记

    一 初识Node js 1 Node js是什么 1 Node js是一个基于Chrome V8 引擎的 JavaScript 运行环境 2 Node js官网 http nodejs cn 2 运行环境 注意 浏览器是JavaScript
  • 运放相位(频率)补偿电路设计

    集成运放的内部是一个多级放大器 其对数幅频特性如图 1所示中的曲线 实线 对数幅频特性曲线在零分贝以上的转折点称为极点 图中 称P1 P2点为极点 极点对应的频率称为转折频率 如fp1 fp2 第一个极点 即频率最低的极点称为主极点 在极点
  • Java实现远程调试

    https www cnblogs com wwywwy p 9626078 html 远程调试 主动连接调试 服务端配置监控端口 本地IDE连接远程监听端口进行调试 一般调试问题用这种方式 被动连接调试 本地IDE监听某端口 等待远程连接
  • 分段和分页内存管理

    两者描述 打个比方 比如说你去听课 带了一个纸质笔记本做笔记 笔记本有100张纸 课程有语文 数学 英语三门 对于这个笔记本的使用 为了便于以后复习方便 你可以有两种选择 第一种是 你从本子的第一张纸开始用 并且事先在本子上做划分 第2张到
  • 数据结构笔记:PR四叉树

    1 基本介绍 在PR四叉树中 每个节点代表一个矩形区域 并且每个节点要么没有子节点 要么有四个子节点 分别代表该矩形区域的四个象限 2 数据结构 PR四叉树的每个节点通常包含以下几个元素 区域 矩形 节点所代表的二维空间范围 点 存储在该区
  • 零售超市如何应对消费者需求?非常全面!

    随着科技的飞速发展和消费者期望的不断演变 零售行业正经历着一场深刻的革命 传统零售模式逐渐被新零售模式所取代 而其中一个备受关注的元素是自动售货机 自动售货机不仅在商场 车站和办公楼等高流量地点迅速扩张 还在重新定义我们如何购物 何时购物以
  • js数组转tree

    数组转 tree目前发现就三种方式 js版本实现了三种 初始化数据 let arr name 李四 id 2 pid 0 name 王五 id 3 pid 0 name 赵六 id 4 pid 3 name 吗六 id 9 pid 3 na
  • Latex编辑器Texstudio的快捷键汇总(更新)

    Latex编辑器Texstudio的注释快捷键 注释 Ctrl T 去除注释 Ctrl U
  • 语音识别之端点检测

    在之前呢我们已经把portaudio平台搭好了 可以采集声音信号并播放了 那么接下来呢我们就来做一些实质性的东西 自适应端点检测 那么什么是自适应端点检测呢 也就是采集声音信号的时候 开始说话到说话结束 我们把这一段声音信号采集下来进行处理
  • Java服务端返回json

    1 pom xml文件导入jar包
  • c语言的指针,以及指针套指针

    1 对于指针的理解 在C语言中 指针是一种特殊的数据类型 它用于存储变量的内存地址 通过指针 可以直接访问和修改变量的值 而不需要知道变量的名称 下面是一个例子来理解指针的概念 include
  • 1、ZigBee 开发教程之基础篇—ZigBee简介和学习方法

    文章目录 1 前言 2 ZigBee 简介 3 ZigBee和IEEE 802 15 4 的关系 4 ZigBee 的特点 5 ZigBee 无线网络通信信道分析 6 ZigBee的网络拓扑模型 7 ZigBee的应用范围 8 本人所使用的
  • 微信消息实现自动推送--方式一 成功啦 进来学

    前言 第一次来的小伙伴 请先看手动版教程 链接如下 直接点击 微信消息推送 超详细版 进来学 接下来 向大家说明一下 微信消息实现自动推送的方式有好几种 今天分享的是通过windows系统中的计划任务管理添加任务进行实现 也是比较简单的一种
  • Python-字典:键值对的魔法世界

    深入理解Python字典 键值对的魔法世界 在Python中 字典 Dictionary 是一种强大且常用的数据结构 它允许我们存储和组织键值对 Key Value 数据 与列表和元组不同 字典中的数据是无序的 但每个数据都与一个唯一的键相
  • Sentinel 流量控制

    上篇 Nacos 配置中心 目录 Sentinel 介绍 官方介绍 https sentinelguard io zh cn docs introduction html Sentinel 部署 服务改造 Sentinel 关键概念 流控规
  • Java 父类 xx = new 子类()

    在java中我们经常遇到父类 xx new 子类 的定义对象 那么与子类 xx new 子类 相比有什么区别呢 下面我们从代码分析 package com sky java public class FatherNewSon param a
  • Rust-Rocket框架笔记

    Rust Rocket框架笔记 Rocket Learn doc Rocket Addr 视频地址 What is Rocket QuickStart 下载Rocket Rust 运行Rust Rocket Hello 错误 端口占用 解决
Powered by Hwhale