【Rust日报】2023-05-03 pavex, 一个新的 Rust web 框架

Pavex是一个用Rust构建API的框架,它将高级描述转换为服务器源代码,提供高效能和易用性。文章还介绍了如何使用Rust创建GitHubActions,展示了一个检查PR内容的示例,强调了低依赖性和快速执行。
摘要由CSDN通过智能技术生成

pavex,一个新的 Rust web 框架

Pavex 是一个用 Rust 构建 API 的新框架。它非常不同:我们可以将 Pavex 视为用于构建 Rust API 的专用编译器。它将应用程序应该做什么的高级描述作为输入,一个 Blueprint 描述示例:

pub fn app_blueprint() -> Blueprint {
    let mut bp = Blueprint::new();
    bp.constructor(f!(crate::http_client), Lifecycle::Singleton);
    bp.constructor(f!(crate::extract_path), Lifecycle::RequestScoped);
    bp.constructor(f!(crate::logger), Lifecycle::Transient);
    bp.route(GET, "/home", f!(crate::stream_file));
    bp
}

它生成一个完整的网络服务器的源代码作为输出,根据您的规范运行,准备启动。Pavex 旨在拥有这一切:出色的人体工程学和高性能,让其 Rails、Django 或 ASP.NET Core 一样易于使用并且与剥离所有抽象的手写解决方案一样快!

  • https://github.com/LukeMathWalker/pavex


GitHub Actions in Rust

  Rust 是创建 GitHub Action 的绝佳语言。在本文中,作者将介绍如何创建 ngerakines/pr-has-issues-action GitHub Action。

  对于某些上下文,我想要一种轻量级的方法来验证 PR 的内容,特别是确保标题和正文都不为空并且至少包含 on issue 前缀。例如,如果我要创建一个标题为“Support account creation”的 PR,我想确保标题至少包含一个问题前缀,例如“ISSUE-1 Support account creation”。

  有几种不同的方法可以使用输入、输出和环境变量来实现 github action。我想让它尽可能简单,所以我只查看与触发事件关联的 GitHub action 上下文。期望此 action 与 pull_request 事件一起使用,因此我正在寻找该有效负载的编号、pull_request.title 和 pull_request.body 值。

  该事件数据作为挂载文件传递到上下文,并且 GITHUB_EVENT_PATH 环境变量提供该 JSON 文件的位置。因为该操作只是与文件系统交互,所以我可以保持较低的依赖项数量和较小的生成的二进制文件。  接下来是存储库根目录中的操作描述符文件。

name: 'PR Has Issues'
description: 'Checks for issues references in pull requests.'
inputs:
  prefixes:
    description: A comma separated list of key prefixes.
    required: true
runs:
  using: 'docker'
  image: 'ghcr.io/ngerakines/pr-has-issues-action:v3'
  args:
    - ${{ inputs.prefixes }}

  你会在这里注意到几件事。首先,runs.image: ... value 并不像 GitHub 文档所说的那样只是 Dockerfile ,而是对容器映像的引用。当我发布一个版本时,我首先进行构建并推送到 ghcr.io。如果我不这样做,每次引用操作时,它都会从头开始构建。这使它减少到 2-3 秒而不是 2-3 分钟。

  另一件需要做的事情可能不是很明显,那就是确保你发布的 ghcr 包是公开的。您需要从存储库导航到包并将可见性从私有(默认)更改为公共。如果您不这样做,您将在使用该操作时收到容器不存在的错误。

  • https://blog.ngerakines.me/posts/github-actions-in-rust/


From 日报小组 侯盛鑫 mock

社区学习交流平台订阅:

  • Rust.cc 论坛: 支持 rss

  • 微信公众号:Rust 语言中文社区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值