界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
开发与工程 · SKILL.md

minimize-rust-ffi-crate-surface

minimize-rust-ffi-crate-surface

【开发与工程】Remove Rust-defined C symbols that are either unused or only used in C/C++ unit tests.

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

GitHub

name: minimize-rust-ffi-crate-surface description: Remove Rust-defined C symbols that are either unused or only used in C/C++ unit tests.

Minimize Rust FFI Crate Surface

Remove C symbols defined in a Rust FFI crate or file that are either unused or only used in C/C++ unit tests.

Arguments

  • <path>: Path to the Rust crate or file.
  • <path 1> <path 2>: Multiple Rust crates/files.

If the path doesn't start with src/, assume it to be in the src/redisearch_rs/c_entrypoint directory. E.g. numeric_range_tree_ffi becomes src/redisearch_rs/numeric_range_tree_ffi. If the path points to a directory, review the documentation of all Rust files in that directory.

Instructions

  • Use analyze-rust-ffi-crate-surface to enumerate and analyze the usage of all the FFI symbols exposed by the Rust crate or file (e.g. extern "C" fn annotated with #[unsafe(no_mangle)] or type definitions).
  • For each unused symbol:
    • Delete its Rust definition.
    • Run C/C++ unit tests to ensure the symbol was indeed unused (via ./build.sh RUN_UNIT_TESTS)
  • For each symbol that is only used in C/C++ unit tests, elaborate a plan to either:
    • Refactor the C/C++ unit tests not to use it.
    • Remove the C/C++ unit tests (or assertions) that rely on it, since they are prying into the implementation details of the Rust crate.
    • Keep the symbol, but mark it as "test only" in the Rust documentation.
我的收藏