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.rs2 directories, 3 files

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

cargo pgrx run

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

my_extension=# CREATE EXTENSION my_extension;
CREATE EXTENSIONmy_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

社区学习交流平台订阅:

  • Rust.cc 论坛: 支持 rss

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

【Rust 日报】2023-05-17 pgx -- 用于在 Rust 中开发 PostgreSQL 扩展的框架相关推荐

  1. English Learning - L3 综合练习 3 VOA-Food 2023.05.17 周三

    English Learning - L3 综合练习 3 VOA-Food 2023.05.17 周三 句 1 句 2 句 3 句 4 句 5 句 6 句 7 句 8 句 9 句 10 句 11 句 ...

  2. 【Rust 日报】2023-1-19 Lars Bergstrom当选为Rust基金会董事会主席

    hyper 2022年的回顾 hyper在2022年发生了很多事情,本篇博文回顾了这一年以来的一些进展. 原文: https://seanmonstar.com/post/70680239226036 ...

  3. 【Rust日报】2021-10-19 rs-merkle:一个用Rust编写的高级散列树库

    rs-merkle:一个用Rust编写的高级散列树库 rs_merkle: an advanced hash tree library for Rust rs-merkle是一个高级的Rust mer ...

  4. 【Rust日报】2020-10-02 移动操作系统SailfishOS支持Rust了

    移动操作系统SailfishOS支持Rust了 链接:https://forum.sailfishos.org/t/release-notes-pallas-yllastunturi-3-4-0/22 ...

  5. 【Rust 日报】2022-03-27 Google对25名Rust开源贡献者做出奖励

    Google对25名Rust开源贡献者做出奖励 Rust 是系统级编程语言,重点关注内存安全.Google 在一些项目中使用了 Rust:包括 Android.Fuchsia 和 ICU4X:并一直参 ...

  6. 【Rust日报】2021-10-05 Mimic: 一款用Rust语言编写的命令行Gameboy模拟器

    Mimic: 一款用Rust语言编写的命令行Gameboy模拟器 Mimic: A Gameboy emulator written in Rust that can be played on the ...

  7. 【Rust日报】2020-04-13 Ruma,Flutter RS,Valora,Rust SSH,mathbench

    1 - Ruma死掉了, Ruma万岁! 于2020年4月10日 Ruma is dead, long live Ruma! April 10, 2020作者:Jonas Platte Ruma是一组 ...

  8. 【Rust日报】2020-10-12 蜜月期之后的 Rust

    蜜月期之后的 Rust 使用每一种语言就如同每段感情一样, 都有蜜月期. 当蜜月期过后, Rust 是否还是你的最爱呢? 作者两年前就写过 <<爱上Rust>> 的相关博客. ...

  9. java cuba_CUBA平台–用于快速应用程序开发的开源Java框架

    java cuba 传统上,自计算时代开始以来,企业软件开发自然面临着一个挑战,当时自然而然地,企业软件开发本应专注于解决实际的业务问题,但与此同时,开发人员必须在技术上花费大量时间和精力.解决方案的 ...

  10. CUBA平台–用于快速应用程序开发的开源Java框架

    传统上,自计算时代开始以来,企业软件开发自然面临着一个挑战,当时自然而然地,企业软件开发本应专注于解决实际的业务问题,但与此同时,开发人员必须在技术上花费大量时间和精力.解决方案的一面,例如架构和通用 ...

最新文章

  1. data-参数说明(模态弹出窗的使用)
  2. .net 显示时间为YYYY-MM-DD格式
  3. Active Diretory 全攻略(三)--建立域(2)
  4. 小学5年级计算机考试作文,我的小学老师五年级优秀作文(通用10篇)
  5. 吃香椿的注意事项:焯水
  6. luogu P5304 [GXOI/GZOI2019]旅行者
  7. 36 | 套路篇:怎么评估系统的网络性能?
  8. 投资学习网课笔记(part8)--基金第八课
  9. 前端学习(2788):完成图片商品数据页面渲染
  10. python etree创建xml_Python构建XML树结构的实例教程
  11. 【源码阅读】看Spring Boot如何自动装配ActiveMQ收发组件
  12. Linux下Git免输密码解决方式
  13. linux emule 编译 wx-config --libs,Linux下的wxWidgets静态编译实现方法
  14. mysql 查看锁表_MySQL的四种事务隔离级别
  15. 后缀学习第三课(下)
  16. 如何用计算机设置热点,Win7如何在笔记本电脑设置热点wifi?
  17. Linux debian利用ifconfig查看IP地址
  18. 什么是git 暂存区
  19. 【OpenVINO 3】POT量化流程
  20. mac上使用nginx代理

热门文章

  1. 浅谈市场推广的一些思路
  2. 分析竞争对手对网站优化的好处
  3. 跳台阶问题(一次只能跳1阶或者两阶)
  4. 三个人比身高c语言,C语言的那些题(三) —— 编程计算身高问题
  5. win8计算机睡眠无法唤醒,Win8电脑睡眠后唤醒不了怎么办?
  6. react动态添加一行,实现删除,新增,编辑
  7. Kioptrix: Level 3靶机实战 lotu cms +sql注入 getshell ht编辑器有root权限,修改/etc/sudoers文件使当前用户具有root权限 提权
  8. iOS设备管理软件 for windows2.17.12官方版
  9. 基于Java毕业设计志愿者网上服务平台的设计与实现源码+系统+mysql+lw文档+部署软件
  10. 计算机网络管理的模型结构,计算机网络体系结构及协议之基本参考模型