知其然,知其所以然
Rust 内部机制 2026-10-02

Cargo.lock 的作用

用真实项目验证 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。

Rust Cargo.lock 锁文件 可复现构建 真实验证 动画演示
Elasticsearch 2026-10-02

Pipeline Aggregation

本机真实对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报错精确指出找不到对应聚合。

Elasticsearch 真实验证 动画演示
Rust 内部机制 2026-10-02

Feature Flag 条件编译

用自己写的库验证 Cargo feature:default / 可选依赖 dep:itoa / cfg!(feature) 报告编译内容;cargo tree -e features;feature 统一(left 要 fast、right 要 extra,fmtx 只编译一份并启用并集);互斥 feature 统一后 compile_error 冲突;--no-default-features 与可选依赖。

Rust Cargo feature 条件编译 真实验证 动画演示
Rust 内部机制 2026-10-02

Workspace 依赖管理

用三成员工作区验证 Cargo workspace:共享一个 Cargo.lock 与 target;成员用 workspace = true 继承 version/edition/依赖;改一处全体生效(0.5.0→0.6.0、itoa =1.0.9);-p 只编译指定成员;3 个独立项目编译 itoa 3 次而工作区 1 次。

Rust Cargo workspace 依赖管理 真实验证 动画演示
Elasticsearch 2026-10-02

bucket_sort 改变聚合桶顺序

本机真实对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),厘清两者生效时机的本质区别。

Elasticsearch 真实验证 动画演示
Rust 内部机制 2026-10-02

Cargo Profile

用 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。

Rust Cargo profile 构建配置 真实验证 动画演示
Rust 内部机制 2026-10-02

Cargo Build Script

用 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 不在运行时依赖里。

Rust Cargo build.rs cc links 真实验证 动画演示
Elasticsearch 2026-10-02

top_hits 获取每个分组的代表文档

本机真实索引alice的3篇和bob的2篇文章,terms分组嵌套top_hits按views降序取size=1,真实精确拿到了各自浏览量最高的文章(500/300)。真实验证top_hits.hits.total精确等于外层桶的doc_count(3/2),证明排序基于完整的桶内文档集合而非被截断的子集,比collapse更通用能嵌套在任意层级。

Elasticsearch 真实验证 动画演示
Rust 内部机制 2026-10-02

单元测试与集成测试

用一个小库验证 cargo test:单元测试(同模块树,能测私有函数)、集成测试(tests/ 每文件一个 crate,只能用公开 API,私有函数 E0603)、文档测试;--list、过滤、#[ignore]/--ignored、should_panic;失败退出码 101 与输出;输出捕获与 --nocapture;测试默认并行(最多 4 个同时,0.41 s 对 --test-threads=1 的 0.83 s)。

Rust 测试 单元测试 集成测试 cargo test 真实验证 动画演示
Elasticsearch 2026-10-02

filter 聚合与查询过滤

本机真实索引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天然做不到。

Elasticsearch 真实验证 动画演示
Rust 内部机制 2026-10-02

Doc Test

用一个小库验证文档测试:crate 级、函数级、私有函数的示例都会运行;无标注/should_panic/no_run/ignore/compile_fail 各自的行为与测试名;隐藏行 #;edition 2024 的合并编译;失败时的输出与行号;重命名 API 后引用旧名的 3 个文档测试失败(E0432/E0425)。

Rust 文档测试 rustdoc cargo test 真实验证 动画演示
Elasticsearch 2026-10-02

filters 聚合

本机真实索引5件商品,filters聚合定义重叠条件high_value(price>=100)和is_vip(vip=true),两桶各统计出2件,加起来4件超过真实满足至少一条件的3件——一件price500且vip=true的商品被同时计入两桶。加other_bucket:true后rest桶精确统计出2件都不满足的商品,证明filters聚合的命名分支真实允许重叠,不像terms强制互斥分组。

Elasticsearch 真实验证 动画演示
京ICP备2026067502号-1京公网安备11010502063487号