跳到主要内容

az-stream-wrapper

自动收集自 crates/core/az-stream-wrapper/README.md

对集合进行链式条件筛选的流式查询包装器,提供类似 MyBatis-Plus LambdaQueryWrapper 的链式过滤 API。

功能

  • 等值匹配eq):精确字符串匹配过滤
  • 模糊匹配like):大小写不敏感的子串匹配
  • 集合匹配in):判断字段值是否在候选集合内
  • 逻辑组合or / not / negate):灵活组合多个谓词条件
  • 结果提取list / one):收集所有匹配项或返回第一个匹配项
  • 宏快捷方式stream_query!):一行代码启动链式查询

安装

Cargo.toml 中添加:

[dependencies]
az-stream-wrapper = { path = "../az-stream-wrapper" } # workspace 内部引用
# 或发布后:
# az-stream-wrapper = "0.1" # crates.io 引用

用法

use az_stream_wrapper::lambdaquery;

let items = vec!["apple", "banana", "avocado", "blueberry"];

// 模糊匹配包含 "av" 的元素
let result = lambdaquery(&items)
.like(true, |s: &&str| s, "av")
.list();
assert_eq!(result, vec!["apple", "avocado"]);

// 等值 + 或条件组合
let result = lambdaquery(&items)
.eq(true, |s: &&str| s, "apple")
.or()
.eq(true, |s: &&str| s, "banana")
.list();
assert_eq!(result, vec!["apple", "banana"]);

// 使用宏快捷方式
let result = az_stream_wrapper::stream_query!(&items)
.like(true, |s: &&str| s, "berry")
.one();
assert_eq!(result, Some(&"blueberry"));

依赖的 crates

无外部依赖,仅使用标准库。