用真实项目验证 Cargo.lock:格式 version = 4、每个包的 source 与 SHA-256 checksum;--locked 在锁文件需要更新时拒绝构建;篡改 checksum 得 changed between lock files;--precise 钉住版本后 build --locked 保持 itoa 1.0.5;cargo new 的 .gitignore 不忽略 Cargo.lock。
本机真实对4天销售额(100/150/120/200)跑date_histogram+sum,叠加derivative精确算出增量(50/-30/80),cumulative_sum算出累计总额(100/250/370/570)跟手工验证一致。max_bucket真实定位出销售额最高的01-04(200)。故意写错buckets_path子聚合名,真实400报错精确指出找不到对应聚合。
用自己写的库验证 Cargo feature:default / 可选依赖 dep:itoa / cfg!(feature) 报告编译内容;cargo tree -e features;feature 统一(left 要 fast、right 要 extra,fmtx 只编译一份并启用并集);互斥 feature 统一后 compile_error 冲突;--no-default-features 与可选依赖。
用三成员工作区验证 Cargo workspace:共享一个 Cargo.lock 与 target;成员用 workspace = true 继承 version/edition/依赖;改一处全体生效(0.5.0→0.6.0、itoa =1.0.9);-p 只编译指定成员;3 个独立项目编译 itoa 3 次而工作区 1 次。
本机真实对4分类聚合加bucket_script算出total_val=avg*2,用terms.order直接引用它排序真实400报错'Cannot find aggregation named'——terms.order无法引用同级pipeline聚合结果。改用bucket_sort真实成功按total_val精确降序排出b(200)/d(100)/a(40)/c(10),厘清两者生效时机的本质区别。
用 cargo build -v 验证 Cargo profile 的真实参数:dev 与 release 的 -C 参数、[profile.dev.package."*"] 让依赖单独 opt-level=3、自定义 fastdev profile(inherits)的产物目录、debug 级别不改变 macOS 二进制(457,944 → 461,032 字节)但 target/release 目录从 916,974 涨到 1,442,742 字节、build.rs 不带 opt-level。
用 cc crate 与 links 键验证 Cargo 构建脚本的另一面:build.rs 把 C 编译成 libvec2.a 并自动链接(88 行输出里 43 行是 cc 加的 rerun-if-env-changed);DEP_VEC2_INCLUDE 把元数据传给下游 build.rs;改 VEC2_SCALE 才重跑(运行次数 1→2)且程序输出 110;cc 不在运行时依赖里。
本机真实索引alice的3篇和bob的2篇文章,terms分组嵌套top_hits按views降序取size=1,真实精确拿到了各自浏览量最高的文章(500/300)。真实验证top_hits.hits.total精确等于外层桶的doc_count(3/2),证明排序基于完整的桶内文档集合而非被截断的子集,比collapse更通用能嵌套在任意层级。
用一个小库验证 cargo test:单元测试(同模块树,能测私有函数)、集成测试(tests/ 每文件一个 crate,只能用公开 API,私有函数 E0603)、文档测试;--list、过滤、#[ignore]/--ignored、should_panic;失败退出码 101 与输出;输出捕获与 --nocapture;测试默认并行(最多 4 个同时,0.41 s 对 --test-threads=1 的 0.83 s)。
本机真实索引5篇文档(3active/2inactive),query层bool.filter限定status=active,聚合只统计过滤后的a(2)/b(1)。改用filter聚合,query不过滤,真实同一请求里同时拿到overall_by_cat(全部5篇a:3/b:2)和active_only.by_cat(限active的3篇a:2/b:1)——一次请求并存整体与筛选后两份视图,query层filter天然做不到。
用一个小库验证文档测试:crate 级、函数级、私有函数的示例都会运行;无标注/should_panic/no_run/ignore/compile_fail 各自的行为与测试名;隐藏行 #;edition 2024 的合并编译;失败时的输出与行号;重命名 API 后引用旧名的 3 个文档测试失败(E0432/E0425)。
本机真实索引5件商品,filters聚合定义重叠条件high_value(price>=100)和is_vip(vip=true),两桶各统计出2件,加起来4件超过真实满足至少一条件的3件——一件price500且vip=true的商品被同时计入两桶。加other_bucket:true后rest桶精确统计出2件都不满足的商品,证明filters聚合的命名分支真实允许重叠,不像terms强制互斥分组。