name: 最小化Rust FFI Crate表面 description: 移除未使用或仅在C/C++单元测试中使用的Rust定义的C符号。
最小化Rust FFI Crate表面
移除在Rust FFI crate或文件中定义的未使用或仅在C/C++单元测试中使用的C符号。
参数
<path>: Rust crate或文件的路径。<path 1> <path 2>: 多个Rust crates/文件。
如果路径不以src/开头,假设它在src/redisearch_rs/c_entrypoint目录中。例如,numeric_range_tree_ffi变为src/redisearch_rs/numeric_range_tree_ffi。
如果路径指向一个目录,查看该目录中所有Rust文件的文档。
指令
- 使用analyze-rust-ffi-crate-surface来枚举和分析由Rust crate或文件暴露的所有FFI符号的使用情况(例如,用
#[unsafe(no_mangle)]注释的extern "C" fn或类型定义)。 - 对于每个未使用的符号:
- 删除其Rust定义。
- 运行C/C++单元测试以确保该符号确实未使用(通过
./build.sh RUN_UNIT_TESTS)
- 对于每个仅用于C/C++单元测试的符号,制定计划以:
- 重构C/C++单元测试,不再使用它。
- 移除依赖于它的C/C++单元测试(或断言),因为它们窥探了Rust crate的实现细节。
- 保留该符号,但在Rust文档中标记为“仅测试”。