< 返回版块

EAHITechnology 发表于 2023-05-18 23:34

Tags:rust, 日报

pgx -- 用于在 Rust 中开发 PostgreSQL 扩展的框架

pgx是一个用于在 Rust 中开发 PostgreSQL 扩展的框架,并力求尽可能地惯用和安全。pgx 支持 Postgres v10-v14。

主要特征:

  • 带有 cargo-pgx 的完全托管的开发环境;
# 快速创建新的扩展
cargo pgx new

# 安装新的(或注册现有的)PostgreSQL 安装
cargo pgx init

# 运行您的扩展程序并在(或pgcli)中进行交互式测试
cargo pgx runpsql

# 跨多个 PostgreSQL 版本对您的扩展进行单元测试
cargo pgx test

# 为您的扩展创建安装包
cargo pgx package
  • 自动架构生成 完全用 Rust 实现扩展;
    将许多 Rust 类型自动映射到 PostgreSQL;
    动生成的 SQL 模式(或通过 手动生成cargo pgx schema);
    包含带有 extension_sql 的自定义 SQL! & extension_sql_file!

  • 安全第一 将 Rust panic!s 转换为 Postgres ERRORs 中止交易,而不是进程;
    内存管理遵循 Rust 的 drop 语义,即使面对 panic! 和 elog(错误);
    #[pg_guard] 程序宏确保以上;
    Postgres 基准是 Option where T: FromDatum;
    NULL 数据安全地表示为 Option::::None。

等等...

那我们怎么使用呢?首先安装cargo-pgrx子命令并初始化开发环境:

cargo install --locked cargo-pgrx
cargo pgrx init


该init命令下载当前支持的 PostgreSQL 版本,将它们编译为~/.pgrx/,然后运行initdb​​. 也可以使用现有的(用户可写的)PostgreSQL 安装,或安装版本的子集

cargo pgrx new my_extension
cd my_extension

这将为扩展包创建一个新目录。

$ tree 
.
├── Cargo.toml
├── my_extension.control
├── sql
└── src
    └── lib.rs

2 directories, 3 files

新扩展包括一个示例,因此您可以继续并立即运行它。

cargo pgrx run

这会将扩展编译为共享库,将其复制到指定的 Postgres 安装,启动该 Postgres 实例并将您连接到与扩展同名的数据库。一旦 cargo-pgrx 将我们带入 psql,我们就可以加载扩展并对示例函数执行 SELECT。

my_extension=# CREATE EXTENSION my_extension;
CREATE EXTENSION

my_extension=# SELECT hello_my_extension();
 hello_my_extension
---------------------
 Hello, my_extension
(1 row)

  • https://github.com/tcdi/pgrx

在 Rust 中构建一个简单的 grep CLI 应用程序

本文说明了我们如何在 Rust 中构建一个 CLI 应用程序,它是 grep 的一个非常基本的实现。 这个应用程序将有 2 种操作模式:从标准输入管道输入并搜索它们,以及读取文件并搜索它。 该程序的输出将是与搜索词匹配的行,其中包含突出显示的词。 本文涵盖了终端中的 stdin 操作、检测终端何时处于 tty 模式与 pipe 模式、执行简单的文件 I/O、创建非消耗性构建器、管理结果以及构建简单的 CLI 界面等主题。 我们正在构建的应用程序设计非常简单。 它让我们准备好接下来使用像 termion 和 tui 这样的 crates 来构建更复杂的 TUI 应用程序。

  • https://developerlife.com/2022/03/02/rust-grep-cli-app/
  • https://github.com/r3bl-org/r3bl_rs_utils

From 日报小组 侯盛鑫 mock

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页