51个版本

使用旧的Rust 2015

0.4.11 2022年5月26日
0.4.10 2021年5月22日
0.4.7 2021年2月10日
0.4.6 2020年11月10日
0.1.3 2016年12月31日

#4 in #contrib

Download history 3843/week @ 2024-03-14 4624/week @ 2024-03-21 4688/week @ 2024-03-28 3602/week @ 2024-04-04 4602/week @ 2024-04-11 4480/week @ 2024-04-18 4914/week @ 2024-04-25 4133/week @ 2024-05-02 4272/week @ 2024-05-09 4059/week @ 2024-05-16 4131/week @ 2024-05-23 4386/week @ 2024-05-30 3500/week @ 2024-06-06 3361/week @ 2024-06-13 3642/week @ 2024-06-20 2687/week @ 2024-06-27

13,735 每月下载量
不到 84 crates 中使用

MIT/Apache 和可能 GPL-3.0

1.5MB
15K SLoC

Rocket

Build Status Rocket Homepage Current Crates.io Version Matrix: #rocket:mozilla.org IRC: #rocket on chat.freenode.net

Rocket是一个专注于易用性、可表达性和速度的Rust(nightly)网络框架。以下是一个完整的Rocket应用程序的示例

#![feature(proc_macro_hygiene, decl_macro)]

#[macro_use] extern crate rocket;

#[get("/<name>/<age>")]
fn hello(name: String, age: u8) -> String {
    format!("Hello, {} year old named {}!", age, name)
}

fn main() {
    rocket::ignite().mount("/hello", routes![hello]).launch();
}

访问 localhost:8000/hello/John/58,例如,将触发 hello 路由,导致将字符串 Hello, 58 year old named John! 发送到浏览器。如果传递了一个无法解析为 u8<age> 字符串,则不会调用路由,导致404错误。

文档

Rocket有详细的文档

  • 概述:简要了解Rocket的独特之处。
  • 快速入门:尽可能快速地开始。
  • 入门:如何开始您的第一个Rocket项目。
  • 指南:Rocket的详细指南和参考。
  • API文档:rustdocs。

官方社区支持渠道是#rocket:mozilla.org在Matrix上,以及在Freenode上的桥接#rocket IRC频道chat.freenode.net。我们建议您通过Riot通过Matrix加入我们。如果您更喜欢IRC,您可以通过Kiwi IRC客户端或您自己的客户端加入。

构建

nightly

Rocket需要Rust的nightly版本,因为它大量使用了语法扩展。这意味着上面介绍示例中的前两行难以驾驭是必须的。

核心、代码生成和贡献

所有Rocket库都由Cargo管理。因此,编译它们非常简单。

  • 核心:cd lib && cargo build
  • 代码生成:cd codegen && cargo build
  • 贡献:cd contrib && cargo build --all-features

示例

Rocket附带了许多示例,位于examples/目录中,可以使用Cargo编译和运行。例如,以下命令序列构建并运行了Hello, world!示例

cd examples/hello_world
cargo run

您可以通过访问https://127.0.0.1:8000看到Hello, world!

测试

要测试Rocket,只需从源代码树的根目录运行./scripts/test.sh。这将构建并测试corecodegencontrib库以及所有示例。该test.sh脚本不接受任何标志或--release标志以在发布模式下测试或--contrib标志以单独测试所有contrib模块。此脚本由CI运行。

要单独测试一个crate,请在相应的crate目录中运行cargo test --all-features

核心

核心库的测试是在相应的模块中内联进行的。例如,路由测试可以在lib/src/router/mod.rs文件的底部找到。

代码生成

代码生成测试可以在codegen/tests中找到。我们使用从rustc提取的compiletest库进行测试。有关编写编译器测试的信息,请参阅编译器测试文档

文档

您可以通过运行./scripts/mk-docs.sh在本地构建Rocket API文档。生成的文档是上传到api.rocket.rs的文档。

贡献

贡献绝对、积极地欢迎和鼓励!贡献的形式很多。您可以

  1. 通过问题提交功能请求或错误报告。
  2. 通过问题请求改进文档。
  3. 需要反馈的问题进行评论。
  4. 通过拉取请求贡献代码。

我们旨在保持Rocket代码质量处于最高水平。这意味着您贡献的任何代码都必须是

  • 注释:公共项必须有注释。
  • 文档:公开项必须有rustdoc注释,如果有适用示例。
  • 风格:您的代码应尽可能使用rustfmt
  • 简单:您的代码应尽可能简单、地道地完成任务。
  • 已测试:你必须为添加的任何功能添加(并通过)令人信服的测试。
  • 聚焦:你的代码应该只做它应该做的事,不做其他任何事。

所有拉取请求都由CI进行代码审查和测试。请注意,除非你明确说明,否则你提交给Rocket的任何有意贡献都将根据MIT许可证和Apache许可证版本2.0进行双许可,不附带任何额外条款或条件。

许可证

Rocket可以在以下任一许可证下使用,由你选择

Rocket网站源代码的许可条件是独立的。

依赖关系

~8-26MB
~423K SLoC