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
社区学习交流平台订阅:
评论区
写评论还没有评论