首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我被 pgx 及其背后的 Rust 美学征服

这个周末, reddit/rust 版,我无意发现了 pgx 这样一个使用 Rust 来撰写 postgres extension 的集成工具,深入地了解其文档并写了几百行代码后,我立刻就被那种直击心灵的简约之美冲破了防线...使用 #[pg_extern] 来封装 Rust 函数,使其接口符合 postgres extension 的 C ABI,以及处理 Rust 数据结构 postgres 内部数据结构的转换。...更方便地定义 postgres 数据类型? 接下来我们来个更加震撼的:通过 pgx serde,你可以很方便地将 Rust 类型映射到 Postgres 类型。...使用 pgx 我们可以创建一个 wallet 函数,声明它是 immutable 的,然后在其内部进行公钥到地址的转换(假设我们的钱包使用 blake3 做 hash)。...「轻松」 sqlite3 / mysql / postgres / mssql 之间无缝迁移。

1.2K20

2023年,Rust能干掉JavaScript吗?

但目前这方面的影响已经很小,基准数据显示,像 Leptos Dioxus 这样的 Rust WASM 框架(底层使用 Sledgehammer,属于速度前三甲级别的 JavaScript 框架)性能上已经优于...幸运的是,Rust 同样是有备而来。 开发者体验 不管大家主观判断如何, Web 开发方面,Rust 有着相对宽松的使用要求。...通常,如果使用 TypeScript 进行编码,我们只有两个选择:类型检查 try-catch 块。但对于拥有一定开发经验的朋友们来说,不断把代友打包到 try-catch 块中仍然有其隐患。...;} 这里展示了两个示例:我们可以使用基础模式匹配来确定字符串是什么,如果结果匹配则返回 OK;如果属于其他内容(会加注下划线),则只返回一个具有 String 类型的错误(也会提示 std::error...我们还可以声明一个变量,要求该变量必须是实际的 Result 类型,否则执行其他操作(示例中为提前返回)。之后,我们就可以使用 res 本体了,因为它将被声明为 Result 中包含的值。

72320
您找到你想要的搜索结果了吗?
是的
没有找到

Next.js + Rust 革新全栈开发,Rust没那么难

Next.js 的应用程序(由于这里我们添加了 ts 标志,所以使用的是 TypeScript);后端部分使用 Rust,再加上相应的 npm 命令,我们可以快速着手后端前端的开发工作。...模式匹配是 Rust 中一种非常强大的错误处理机制,而且提供多种使用方式:我们可以使用 if let else let else,二者都涉及模式匹配,后文将具体介绍。...请求主体(因为我们将请求主体设定为 axum::Json 类型,所以它只会接受带有「username」「password」JSON 请求主体的请求)。...我们登录请求中使用了名为 PrivateCookieJar 的 struct。...因为使用的是私有 cookie jar,所以保存在客户端的任何 cookie 都将使用我们初始 struct 内创建的密钥进行加密,且每次应用启动时都会生成一个新密钥。

54831

Rust日报】 2019-08-29: Postgres 中运行 WebAssembly

这个 sn0int 是给 IT 安全专业人士 bug 捕获者设计的 OSINT 框架及包管理器。它用于对给定的目标或你自己搜集情报,生成统一的格式,给后续的研究使用。...只是简单的字符串等类型的测试,快照测试支持进行复杂类型值的断言,并提供全面的功能进行更改校审。 快照测试在对值对象非常大或者改动非常频繁的时候,非常有用。 ?...它最初由 @phaazon 使用 Haskell 实现, 2016 年的时候,移植到了 Rust 上面。...Repo: https://github.com/amethyst/space_shooter_rs/ postgres-ext-wasm - Postgres 中运行 WebAssembly Wasmer...那帮人真的是疯狂,我们都还在畅想 wasm 的应用场景的时候,他们已经将 wasm 塞进了 postgres

96030

Rust Web 开发之Axum使用手册

这对于大多数基本类型(可以参考Rust 学习之数据类型[5]) 例如,如果我们想向用户发送一些 JSON 数据,我们可以使用 Axum 的 JSON 类型,使用 axum::Json 类型封装我们要发送回的数据...大多数 Rust Web 框架(包括 Axum)中,我们使用所谓的「应用状态」(app state) - 一个专门用于应用程序的路由之间共享的所有变量的结构体。...(Rust 赋能前端-开发一款属于我们的前端脚手架中我们使用serde_json处理json文件) 为了能够达到我们想要的目标,我们尝试使用一个实现了 serde::Deserialize 的 Rust...该函数需要对 Request Next 类型进行泛型绑定,因为 Axum 的 body 类型 0.6 中是泛型的。...部署 Axum 由于需要使用 Dockerfile,使用 Rust 后端程序进行部署总是有点麻烦。

1.1K11

基于 actix、async-graphql、rbatis、pgsqlmysql 构建 GraphQL 服务(4)-变更服务

这半个月以来,活跃的 Rust 社区生态,进行了诸多更新:Rust 版本即将更新为 1.52.0,Rust 2021 版即将发布……本示例项目中,使用的依赖项 async-graphql / async-graphql-actix-web...这个顺序并非固定,实际开发中,可以根据自己习惯进行调整。...cred 是计划使用 PBKDF2 对密码进行加密(salt)散列(hash)运算后的鉴权码,需要定义,但无需新增时填写。...随着本教程的逐渐深入,我们会迭代为关联用户特定值,使用 PBKDF2 对密码进行加密(salt)散列(hash)运算后的鉴权码。...下篇开始,我们进行前端的开发,仍然使用 Rust 技术栈:actix-web、rhai、handlebars-rust、surf,以及 graphql_client。

1.1K30

构建AI前的数据准备,SQL要比Python强

随着产业发展,生产系统中的数据非常混乱,需要进行大量转换才能用于构建 AI。有些 JSON 列每行模式都不相同,有些列包含混合数据类型,有些行有错误值。...我对 SQL 的第一个误解是:SQL 无法进行复杂的转换 我们正在处理一个时间序列数据集,我们希望能够跟踪特定用户。...我使用下面的 Python SQL 代码先在较小的数据集上测试转换。Python SQL 分别花费 591 秒 40.9 秒完成了任务。...我相信这是真的,并且某些情况下 Python 「最好」语言之间的性能差异可以忽略不计。但是本文介绍的情况下,Python 无法与 SQL 比肩。这些发现完全改变了我做 ETL 的方法。...更重要的是,我知道我只是触及了 SQL postgres 的皮毛。我期待能发掘出更多出色的功能,使用分析库实现加速。 ?

1.5K20

构建AI前的数据准备,SQL要比Python强

随着产业发展,生产系统中的数据非常混乱,需要进行大量转换才能用于构建 AI。有些 JSON 列每行模式都不相同,有些列包含混合数据类型,有些行有错误值。...我对 SQL 的第一个误解是:SQL 无法进行复杂的转换 我们正在处理一个时间序列数据集,我们希望能够跟踪特定用户。...我使用下面的 Python SQL 代码先在较小的数据集上测试转换。Python SQL 分别花费 591 秒 40.9 秒完成了任务。...我相信这是真的,并且某些情况下 Python 「最好」语言之间的性能差异可以忽略不计。但是本文介绍的情况下,Python 无法与 SQL 比肩。这些发现完全改变了我做 ETL 的方法。...更重要的是,我知道我只是触及了 SQL postgres 的皮毛。我期待能发掘出更多出色的功能,使用分析库实现加速。

1.5K20

SQL的未来:会话式解决问题

函数(如 Postgresjsonb_array_elements,它会将 JSON 列表转换成一组行),并且如果您能够想象这种转换如何与连接进行交互,您可以非常简洁地编写强大的查询,如示例 A...在这种情况中,您不仅仅需要 Postgres 知识:您还需要了解 AWS 策略的构建方式,然后您需要弄清楚如何使用 Postgres 联合 JSONB 运算符对其进行查询。...我对最新 GPT 的一次测试中,我想到了将 Postgres 惯用法翻译成 SQLite。Postgres SQLite JSON 模式截然不同。...据我所知,事实证明你无法消除连接。以下是 ChatGPT 的解释: json_each:这是 SQLite 中与 jsonb_array_elements 等效的元素,但它的功能略有不同。...我没有忽视体现于最强大的 LLM 中的黑暗模式,但我无法忽视它们所能提供的提升。许多类型的工作要求我们大规模地对信息进行推理,而不仅仅是对你的代码和文档进行推理,尽管这是我们这里的重点。

7210

听GPT 讲Rust源代码--libraryalloc

这个文件主要有以下作用功能: 给 String 类型的不同函数进行性能测试:push_str、push、len 等等。这些函数是 String 类型的常用操作,基准测试可以比较它们之间的性能差异。...总之,rust/library/alloc/benches/string.rs 文件是 Rust 标准库中用于对字符串类型 String 的性能进行基准测试优化的文件,通过实际运行测试代码并生成性能报告...每个基准测试函数都是一个由test属性装饰的普通函数,该属性告诉Rust测试框架这是一个基准测试。 这些基准测试函数旨在对字符串的不同操作进行基准测试,以比较它们的性能效率。...特点:该结构体的特点在于,它使用了NonNull指针类型来存储头部信息,从而实现了对头部信息的透明性,即Rust编译器无法对头部信息进行优化或访问,只能存储传递头部指针,将头部指针转换为用户定义的类型时...当引用计数为0时,Weak无法访问到数据,可以用于判断数据是否已经被释放。 WeakInner:是Weak内部的一个包装结构体,用于弱引用强引用之间构建关联关系。

9210

Rust日报】Shiva - 解析生成任何类型的文档

Shiva - Rust 中的开源项目,用于解析生成任何类型的文档 我在从事文档搜索引擎项目时产生了该项目的想法。...为了让我的搜索引擎正常工作,它必须能够从不同类型的文档(PDF、DOC、XLS、HTML、XML、JSON 等)中提取文本。我用 Rust 编写了搜索引擎本身。...但不幸的是, Rust 世界中没有可以解析所有类型文档的库。 因此,我必须使用 Apache Tika 并从我的 Rust 代码中调用它。这种解决方案有什么缺点?...我想介绍一下“serde-sqlite-jsonb”,这是一个新的 Rust 库,旨在将 SQLite 最近引入的 JSONB 列直接序列化反序列化到您的数据结构中。...它消除了从 JSONBJSON,然后再到您自己的数据结构的双重转换,从而提高了效率性能。

10210

Rust日报】2022-07-17 用Rust写Linux内核

此版本增加了 12 个新练习,对现有练习进行了大量小改进,重新安排了大部分练习并删除了一些不适合此项目的练习。未来可能为智能指针提供更好的练习。...它只做一件事:使用 TUI 高效地导航到文件夹,然后退出时打印该文件夹路径。 GitHub:https://github.com/mgunyho/tere kanata:键盘定制 跨平台键盘定制。...写个语言 Rust 写的解释型、动态类型、多线程编程语言。...特点包括: 多种数据类型:字符、整数、浮点数、字符串、数组、哈希表、字节和缓冲区。 算术逻辑运算。 变量常量。 控制循环结构。 函数 Lambda 表达式。 线程多线程。...:/some_path/report.json" 应用删除建议:unused-features prune --input "C:/some_path/report.json" GitHub:https

87230

Rust日报】2023-08-16 Neon 基于 rust 的 AWS Aurora Postgres 的无服务器开源替代品

它将存储计算分开,并通过跨节点集群重新分布数据来替代 PostgreSQL 存储层。 尝试使用 Neon 免费套餐创建无服务器 Postgres 实例。...然后使用您首选的 Postgres 客户端(psql、dbeaver 等)连接到它或使用在线 SQL 编辑器。有关连接说明,请参阅从任何应用程序连接。或者,本地编译并运行该项目。...https://github.com/neondatabase/neon Rusqlite 使用 Rust 的 SQLite 包装器 Rusqlite 是一个使用 Rust 的 SQLite 的符合人体工程学的包装器...从历史上看,该 API 是基于 rust-postgres. 然而,两者很多方面存在分歧,并且两者之间不存在兼容性。...使用 您的 Cargo.toml 中: [dependencies] # `bundled` causes us to automatically compile and link in an up

30420

Rust日报】 2019-05-25:Mockiato - 一個嚴格友好的Mock測試庫

Into The Wild 有人用rust寫了一個很像lf2(Little Fighter 2)的2.5D動作遊戲 Read more Rust官网的国际化支持,找人翻译 Read more Read...more 「讨论」对于单人主力维护的项目如何看待 楼主覺得 actix rust-postgres 很棒 但發現這兩個庫都只有一個大佬當主力開發,他覺得庫只有一人維護對大公司來說不是問題 但對無力繼續維護的小客戶來說是個問題...json in rust" 使用下列指令 hors "how to parse json in rust" -a 得到解答 - Answer from https://stackoverflow.com...; fn main() { let mut file = File::open("text.json").unwrap(); let mut data = String::new();...file.read_to_string(&mut data).unwrap(); let json = Json::from_str(&data).unwrap(); println

58240

零开销、编译时动态SQL ORM方面的探索

SQL或者从键盘输入的SQL,但具体是什么,在编译时无法确定,只有等到程序运行起来,执行的过程中才能确定,这种SQL叫做动态SQL 前言 笔者曾经2020年发布基于rust的orm第一版,参见文章https..., a); } 介绍Java最普遍的ORM框架前世今生 - Mybatis、MybatisPlus,XML,OGNL表达式,dtd文件 MyBatisjavasql之间提供更灵活的映射方案,...是一种可以方便地操作对象属性的开源表达式语言. Rbatishtml,py_sql内部借鉴部分ognl表达式的设计,但是rbatis实际操作的是json对象。...不但降低cpu使用率,同时提升性能 过程宏框架,synquote(分别解析生成词条流) 我们知道synquote结合起来是实现过程宏的主要方式,但是synquote仅支持rust语法规范。...答案就是让我们的语法糖转换为符合rust规范的语法,让synquote能够正常解析生成词条流 关于扩展性-包装serde_json还是拷贝serde_json源码?

90030

实战:使用rust开发动态链接库并在Golang中使用

的确,现在掌握Rust的人还相对较少,很多学习Rust的同学可能是出于自己的兴趣爱好,实际并无法在工作中有机会实际使用。...,我们可以想象到,第8行调用这个函数的时候,ctypes这个库,会执行下列操作: 根据第5行指定的入参类型,把两个Python字符串对象转换为C语言的char *char类型,对于char *类型,...另外一个很重要的点就是#[no_mangle]这个属性标签,它告诉Rust编译器不要在输出的符号表中对这个函数的函数名做混淆,因为跨语言的函数调用中,知道被调用函数的名字是非常重要的,否则链接器就无法符号表中对应到这个函数的入口地址...ret这个变量中,这个变量的类型是C.ulong,为了将C.ulong与go的内置int类型进行比较,我们需要再做一次类型转换。...这一步相当于做了一个认证,把`&CStr`转换为`&str` // 就可以告诉类型系统:这块内存满足我们Rust对字符串的要求,可以Safe Rust代码里放心使用了。

2.4K10
领券