RepoPilotOpen in app →

rust-lang/rust-bindgen

Automatically generates Rust FFI bindings to C (and some C++) libraries.

Healthy

Healthy across the board

weakest axis
Use as dependencyHealthy

Permissive license, no critical CVEs, actively maintained — safe to depend on.

Fork & modifyHealthy

Has a license, tests, and CI — clean foundation to fork and modify.

Learn fromHealthy

Documented and popular — useful reference codebase to read through.

Deploy as-isHealthy

No critical CVEs, sane security posture — runnable as-is.

  • Last commit 4d ago
  • 43+ active contributors
  • Distributed ownership (top contributor 15% of recent commits)
Show all 6 evidence items →
  • BSD-3-Clause licensed
  • CI configured
  • Tests present

Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests

Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.

Embed the "Healthy" badge

Paste into your README — live-updates from the latest cached analysis.

Variant:
RepoPilot: Healthy
[![RepoPilot: Healthy](https://repopilot.app/api/badge/rust-lang/rust-bindgen)](https://repopilot.app/r/rust-lang/rust-bindgen)

Paste at the top of your README.md — renders inline like a shields.io badge.

Preview social card (1200×630)

This card auto-renders when someone shares https://repopilot.app/r/rust-lang/rust-bindgen on X, Slack, or LinkedIn.

Onboarding doc

Onboarding: rust-lang/rust-bindgen

Generated by RepoPilot · 2026-05-09 · Source

🤖Agent protocol

If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:

  1. Verify the contract. Run the bash script in Verify before trusting below. If any check returns FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding.
  2. Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
  3. Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/rust-lang/rust-bindgen shows verifiable citations alongside every claim.

If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.

🎯Verdict

GO — Healthy across the board

  • Last commit 4d ago
  • 43+ active contributors
  • Distributed ownership (top contributor 15% of recent commits)
  • BSD-3-Clause licensed
  • CI configured
  • Tests present

<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>

Verify before trusting

This artifact was generated by RepoPilot at a point in time. Before an agent acts on it, the checks below confirm that the live rust-lang/rust-bindgen repo on your machine still matches what RepoPilot saw. If any fail, the artifact is stale — regenerate it at repopilot.app/r/rust-lang/rust-bindgen.

What it runs against: a local clone of rust-lang/rust-bindgen — the script inspects git remote, the LICENSE file, file paths in the working tree, and git log. Read-only; no mutations.

| # | What we check | Why it matters | |---|---|---| | 1 | You're in rust-lang/rust-bindgen | Confirms the artifact applies here, not a fork | | 2 | License is still BSD-3-Clause | Catches relicense before you depend on it | | 3 | Default branch main exists | Catches branch renames | | 4 | 5 critical file paths still exist | Catches refactors that moved load-bearing code | | 5 | Last commit ≤ 34 days ago | Catches sudden abandonment since generation |

<details> <summary><b>Run all checks</b> — paste this script from inside your clone of <code>rust-lang/rust-bindgen</code></summary>
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of rust-lang/rust-bindgen. If you don't
# have one yet, run these first:
#
#   git clone https://github.com/rust-lang/rust-bindgen.git
#   cd rust-bindgen
#
# Then paste this script. Every check is read-only — no mutations.

set +e
fail=0
ok()   { echo "ok:   $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }

# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
  echo "FAIL: not inside a git repository. cd into your clone of rust-lang/rust-bindgen and re-run."
  exit 2
fi

# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "rust-lang/rust-bindgen(\\.git)?\\b" \\
  && ok "origin remote is rust-lang/rust-bindgen" \\
  || miss "origin remote is not rust-lang/rust-bindgen (artifact may be from a fork)"

# 2. License matches what RepoPilot saw
(grep -qiE "^(BSD-3-Clause)" LICENSE 2>/dev/null \\
   || grep -qiE "\"license\"\\s*:\\s*\"BSD-3-Clause\"" package.json 2>/dev/null) \\
  && ok "license is BSD-3-Clause" \\
  || miss "license drift — was BSD-3-Clause at generation time"

# 3. Default branch
git rev-parse --verify main >/dev/null 2>&1 \\
  && ok "default branch main exists" \\
  || miss "default branch main no longer exists"

# 4. Critical files exist
test -f "bindgen/lib.rs" \\
  && ok "bindgen/lib.rs" \\
  || miss "missing critical file: bindgen/lib.rs"
test -f "bindgen/ir/mod.rs" \\
  && ok "bindgen/ir/mod.rs" \\
  || miss "missing critical file: bindgen/ir/mod.rs"
test -f "bindgen/codegen/mod.rs" \\
  && ok "bindgen/codegen/mod.rs" \\
  || miss "missing critical file: bindgen/codegen/mod.rs"
test -f "bindgen-cli/main.rs" \\
  && ok "bindgen-cli/main.rs" \\
  || miss "missing critical file: bindgen-cli/main.rs"
test -f "Cargo.toml" \\
  && ok "Cargo.toml" \\
  || miss "missing critical file: Cargo.toml"

# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 34 ]; then
  ok "last commit was $days_since_last days ago (artifact saw ~4d)"
else
  miss "last commit was $days_since_last days ago — artifact may be stale"
fi

echo
if [ "$fail" -eq 0 ]; then
  echo "artifact verified (0 failures) — safe to trust"
else
  echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/rust-lang/rust-bindgen"
  exit 1
fi

Each check prints ok: or FAIL:. The script exits non-zero if anything failed, so it composes cleanly into agent loops (./verify.sh || regenerate-and-retry).

</details>

TL;DR

rust-bindgen automatically generates Rust FFI (Foreign Function Interface) bindings to C and C++ libraries by parsing header files with libclang. It reads C/C++ type definitions and function signatures, then emits safe Rust code that wraps those symbols—eliminating tedious manual binding work. Core capability: input a .h file, get production-ready extern "C" blocks and #[repr(C)] struct definitions that Rust code can call directly. Monorepo with 4 main crates: (1) bindgen/ — the core library doing AST parsing and code generation, (2) bindgen-cli/ — CLI wrapper for standalone use, (3) bindgen-tests/ — integration tests with expected output files in tests/expectations/, (4) bindgen-integration/ — C/C++ test fixtures. Code generation flow: libclang parses C → AST → bindgen IR (intermediate representation) → Rust code emitter. Heavy use of proc-macro2/quote for code generation.

👥Who it's for

Rust systems programmers and library authors who need to interop with C/C++ code (OpenGL bindings, system libraries, GPU drivers, etc). Contributors are typically Rust compiler engineers or FFI enthusiasts working on the Rust-to-C integration layer. End users are build-script authors who run bindgen during compilation; developers using the generated bindings in build.rs files.

🌱Maturity & risk

Highly mature and production-ready. The project shows 1.29M lines of Rust code across multiple crates, a comprehensive CI/CD pipeline (7 GitHub workflows), and a structured test suite in bindgen-tests/. Actively maintained with clear versioning (0.72.0), MSRV policy (1.70.0), and a detailed CHANGELOG.md. This is a critical tool in the Rust ecosystem (directly depended on by many crates).

Low risk from abandonment perspective; risk is primarily in breaking C/C++ parsing semantics. Dependencies are tightly managed in workspace.dependencies (clang-sys is core, but well-maintained). Single-maintainer concerns exist (referenced @emilio for releases), but issue triage is active. Major risk: libclang version incompatibilities or C++ standard evolution could break generated bindings; users must manage clang-sys environment variables carefully. Test coverage is extensive but edge cases in C++ template handling remain challenging.

Active areas of work

Active development visible via 7 GitHub Actions workflows (including publish.yml, release.yml, deploy-book.yml for documentation). No specific recent PR info in provided data, but the CHANGELOG.md and version bump workflows suggest regular releases. The bindgen-integration/cpp/Test.cc fixture and test expectations (60+ .rs files in tests/expectations/tests/) indicate ongoing C++ support refinement. Book deployment workflow points to active user documentation maintenance.

🚀Get running

git clone https://github.com/rust-lang/rust-bindgen.git
cd rust-bindgen
cargo build
cargo test --lib

To use the CLI: cargo install bindgen or cargo run --bin bindgen-cli -- --help. Core development happens in the bindgen/ crate; run cargo test from repo root to exercise all tests including bindgen-tests/.

Daily commands: Library usage in build.rs: see bindgen-tests/tests/expectations/build.rs for example. CLI standalone: bindgen-cli --help or cargo run --bin bindgen-cli -- <header.h>. Full test suite: cargo test (runs all workspace crates). Integration tests: cargo test -p bindgen-tests to run expectations tests comparing actual vs. expected output files.

🗺️Map of the codebase

  • bindgen/lib.rs — Main library entry point and public API; defines the Builder struct and core code generation logic that all users interact with
  • bindgen/ir/mod.rs — Intermediate representation (IR) module defining the abstract syntax tree types that represent C/C++ declarations before Rust code generation
  • bindgen/codegen/mod.rs — Code generation backend that transforms IR into Rust token streams; critical path for all output correctness
  • bindgen-cli/main.rs — CLI entry point demonstrating Builder configuration patterns and option handling for end users
  • Cargo.toml — Workspace configuration defining MSRV (1.70.0), workspace dependencies, and all crate members
  • bindgen-tests/build.rs — Test infrastructure orchestration; shows how integration tests drive bindgen and validate expectations
  • CONTRIBUTING.md — Contributor guidelines and expectations for this community-driven project

🛠️How to make changes

Add a new IR type (e.g., new C++ construct)

  1. Define the enum variant in the Item or Type enum in bindgen/ir/mod.rs (bindgen/ir/mod.rs)
  2. Implement clang cursor → IR conversion in bindgen/ir/parse.rs (likely in a parse_* function) (bindgen/ir/parse.rs)
  3. Add code generation logic in bindgen/codegen/mod.rs (quote! macro to produce Rust tokens) (bindgen/codegen/mod.rs)
  4. Create integration test with .h input and expected .rs output in bindgen-tests/tests/expectations/tests/ (bindgen-tests/tests/expectations/tests/your-feature-name.rs)

Add a new user-facing configuration option

  1. Add the option field to BindgenOptions struct in bindgen/options.rs (bindgen/options.rs)
  2. Add Builder method to configure it in bindgen/builder.rs (e.g., pub fn my_option(mut self, val: T) -> Self) (bindgen/builder.rs)
  3. Add CLI flag parsing in bindgen-cli/main.rs using clap argument definitions (bindgen-cli/main.rs)
  4. Use the option in codegen by checking self.options.my_option in bindgen/codegen/mod.rs (bindgen/codegen/mod.rs)
  5. Add test case in bindgen-tests/tests/expectations/tests/ with the new option enabled (bindgen-tests/tests/expectations/tests/)

Fix or improve struct/union layout handling

  1. Locate the failing test case in bindgen-tests/tests/expectations/tests/ (likely a bitfield or alignment test) (bindgen-tests/tests/expectations/tests/bitfield-*.rs)
  2. Inspect the actual vs. expected output to identify the layout issue (bindgen-tests/build.rs)
  3. Implement fix in bindgen/codegen/struct_layout.rs or bindgen/ir/layout.rs (bindgen/codegen/struct_layout.rs)
  4. Update or create the expectation file with corrected Rust output (bindgen-tests/tests/expectations/tests/your-layout-test.rs)
  5. Run bindgen-tests to validate fix: cargo test -p bindgen-tests (bindgen-tests/Cargo.toml)

Add allowlist/blocklist filtering logic

  1. Update BindgenOptions to add allowlist/blocklist patterns in bindgen/options.rs (bindgen/options.rs)
  2. Add Builder methods (allowlist_item, blocklist_item, etc.) in bindgen/builder.rs (bindgen/builder.rs)
  3. Implement filtering logic in bindgen/ir/analysis.rs (likely in a should_derive_* or is_allowed function) (bindgen/ir/analysis.rs)
  4. Create test in bindgen-tests/tests/expectations/tests/allowlist-*.rs to validate filtering (bindgen-tests/tests/expectations/tests/allowlist_basic.rs)

🔧Why these technologies

  • libclang (clang-sys) — Leverage Clang's official C/C++ parser and semantic analysis instead of reimplementing; handles preprocessor, templates, and complex C++ constructs correctly
  • quote! macro (proc-macro2, quote crate) — Generate syntactically correct Rust token streams without string concatenation; auto-handles hygiene and formatting
  • Rust procedural macros / IR pattern — Separate concerns: parsing (clang) → IR (abstract) → codegen (Rust). Enables independent optimization and testing of each phase
  • Cargo build.rs integration — Allow users to regenerate bindings at compile time automatically; seamless workflow without separate build steps
  • bitflags crate — Efficient C bitfield representation with type safety and zero runtime overhead compared to raw integers

⚖️Trade-offs already made

  • IR as lossy abstraction; does not preserve all C/C++ semantics

    • Why: Simplifies codegen and keeps generated Rust idiomatic; avoids bloat from representing every C feature 1:1
    • Consequence: Some edge-case C constructs (e.g., complex macros, compiler-specific attributes) may not translate perfectly; users may need manual adjustments
  • Allowlist/blocklist filtering at code generation time, not parse time

    • Why: Allows users to experiment with visibility without re-invoking libclang
    • Consequence: Unused IR nodes still take memory; large header trees can be slow even if filtered down
  • Auto-derive Copy, Clone, Debug on all repr(C) types by default

    • Why: Most C types are safe to copy bitwise; reduces manual boilerplate
    • Consequence: Can mislead users about C semantics if structs contain destructible resources or need custom Drop logic
  • Single-pass code generation (no intermediate optimization)

    • Why: Fast, deterministic, and simple; avoids multi-pass complexity
    • Consequence: Generated code may not be as compact as hand-written bindings; larger file sizes for large APIs

🚫Non-goals (don't propose these)

  • Does not generate high-level safe Rust wrappers; output is always unsafe extern blocks
  • Does not handle or validate C macros (beyond #define constants); macro expansion is left to the C preprocessor
  • Not a C++ fully-featured transpiler; C++ support is partial (namespaces, templates, virtual methods only)
  • Does not optimize or minify generated bindings; output prioritizes clarity over compactness
  • Does not perform static analysis or type checking of C code; relies entirely on Clang's AST

🪤Traps & gotchas

libclang availability: bindgen requires libclang to be installed; on some systems (Windows MSVC), you must manually set LIBCLANG_PATH environment variable or set clang-sys features. See BINDGEN_EXTRA_CLANG_ARGS and BINDGEN_EXTRA_CLANG_ARGS_<TARGET> env vars for cross-compilation (non-obvious target-specific clang args). Blocking code generation: libclang parsing is blocking and can be slow on large headers; no async support. C++ quirks: C++ templates and ADL (argument-dependent lookup) are not fully supported; bindgen works better on C headers. Linting strictness: workspace enforces pedantic clippy rules with many exceptions listed in Cargo.toml; adding new code may fail linting. Test expectations brittleness: golden tests in bindgen-tests/tests/expectations/ match exact Rust output; formatting changes or codegen tweaks require updating all affected .rs files manually.

🏗️Architecture

💡Concepts to learn

  • Foreign Function Interface (FFI) — FFI is the entire purpose of bindgen; understanding how Rust calls C functions requires knowledge of calling conventions, ABI representation, and memory safety guarantees across language boundaries
  • Abstract Syntax Tree (AST) and Intermediate Representation (IR) — bindgen parses C headers into libclang's AST, then converts to an internal IR (in bindgen/src/ir/) before emitting Rust; understanding this two-stage transformation is critical for debugging or extending parsing logic
  • Calling conventions (cdecl, stdcall, fastcall) — Different C platforms use different calling conventions for function arguments and return values; bindgen must emit correct #[abi] attributes and struct layouts for each target architecture
  • repr(C) and memory layout — bindgen generates #[repr(C)] structs to match C memory layout exactly; this requires understanding padding, alignment, and field ordering—critical for safety when casting pointers
  • Clang's libclang library and cursor-based AST walking — bindgen uses libclang's C API to parse headers; understanding how libclang cursors (CXCursor) represent declarations is essential for extending what can be parsed
  • Opaque types and void pointers in FFI — Some C types cannot be fully represented in Rust (incomplete structs, opaque handles); bindgen must recognize these and emit void* or opaque repr(C) types to maintain type safety
  • Code generation via proc-macro2 and quote! — bindgen uses proc-macro2 token streams and the quote! macro to generate syntactically valid Rust code; understanding token-based code generation is key to modifying code output
  • rust-lang/rust — The Rust compiler itself; bindgen output must remain compatible with current and MSRV Rust versions, and bindgen sometimes depends on compiler internals for FFI definitions
  • rust-lang/clang-rs — Rust bindings to libclang; bindgen depends on clang-sys crate which wraps this; understanding clang-rs is key to extending bindgen's parsing capabilities
  • eradman/cbindgen — Inverse tool: generates C/C++ headers from Rust code instead of the reverse; complementary approach for Rust-first library development
  • PyO3/pyo3 — Python-Rust FFI bindings generator; shares similar challenges around type mapping and code generation, useful reference for FFI binding design patterns
  • jashkenas/coffeescript — While unrelated in purpose, serves as a reference for how to structure a mature, battle-tested transpiler/code generator tool with extensive test coverage and golden files

🪄PR ideas

To work on one of these in Claude Code or Cursor, paste: Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.

Add comprehensive test expectations for C++ template instantiation edge cases

The bindgen-tests/tests/expectations directory contains 100+ test cases, but C++ template handling is notoriously complex. Looking at the existing test files (anonymous-template-types.rs exists), there are likely edge cases around template specialization, nested templates, and template-dependent types that lack explicit test coverage. Adding these would catch regressions and document supported C++ template patterns.

  • [ ] Create 3-5 new C++ header files in bindgen-integration/cpp/ demonstrating edge cases (e.g., partial template specialization, variadic templates, dependent types)
  • [ ] Generate corresponding expectation files in bindgen-tests/tests/expectations/tests/
  • [ ] Update bindgen-tests/build.rs to include these new test cases in the test harness
  • [ ] Document the C++ template patterns being tested in comments within each expectation file

Add CI workflow to test MSRV (1.70.0) compliance across all workspace members

The workspace declares MSRV 1.70.0 in Cargo.toml with a TODO comment about unused lints, but there's no GitHub Actions workflow currently verifying this. The existing workflows (bindgen.yml, publish.yml) don't explicitly test against the minimum supported version. This would catch dependency version bumps that break MSRV compatibility before they're released.

  • [ ] Create .github/workflows/msrv.yml that runs cargo +1.70.0 test and cargo +1.70.0 check for all workspace members
  • [ ] Ensure the workflow tests both default and all-features configurations for bindgen and bindgen-cli
  • [ ] Add the workflow to .github/workflows/bindgen.yml as a required status check (or keep separate but document in CONTRIBUTING.md)
  • [ ] Update CONTRIBUTING.md to document MSRV testing expectations for contributors

Refactor bindgen-cli/main.rs into modular command handlers for improved maintainability

The bindgen-cli/main.rs is likely a large monolithic file handling argument parsing, configuration setup, and code generation invocation. With clap 4 (already in workspace deps), this could be refactored into separate modules (e.g., bindgen-cli/src/commands/, bindgen-cli/src/config.rs) mirroring common Rust CLI patterns. This improves testability of individual command handlers and readability for new contributors.

  • [ ] Audit bindgen-cli/main.rs to identify logical command groups and configuration setup phases
  • [ ] Create bindgen-cli/src/lib.rs and subdirectories: src/commands/ and src/config/
  • [ ] Extract clap configuration into src/config.rs, command handlers into src/commands/mod.rs
  • [ ] Add unit tests in src/commands/tests.rs for argument validation and config parsing paths
  • [ ] Update bindgen-cli/Cargo.toml to reflect new binary structure if needed and ensure all tests pass

🌿Good first issues

  • Add test coverage for anonymous struct member accessors: The file bindgen-tests/tests/expectations/tests/struct_with_anon_struct_array_float.rs exists but likely has sparse coverage for accessor generation. Write a new test in bindgen-tests/tests/expectations/tests/ for an edge case like nested anonymous unions with alignment constraints, add the header fixture, and verify accessor codegen in bindgen/src/codegen/mod.rs.
  • Improve error messages for unsupported C++ features: When bindgen encounters unsupported C++ constructs (e.g., variadic templates), errors are often cryptic. Audit error emission in bindgen/src/ir/ (type parsing) and bindgen/src/codegen/ to add context-aware error messages. Add a test in bindgen-tests/ showing improved error output.
  • Document BINDGEN_EXTRA_CLANG_ARGS behavior with concrete examples: The README mentions BINDGEN_EXTRA_CLANG_ARGS and BINDGEN_EXTRA_CLANG_ARGS_<TARGET> but does not explain precedence or target-specific resolution. Add a detailed section to the book (likely in docs/ if it exists, or create one) with examples for cross-compilation scenarios (e.g., BINDGEN_EXTRA_CLANG_ARGS_aarch64_unknown_linux_gnu). Update README.md with a link.

Top contributors

Click to expand

📝Recent commits

Click to expand
  • 937b8d0 — Allow zero sized unions to be defined (Dan Robertson)
  • d2a4033 — Allow for renaming struct/union fields (wolfd)
  • 092d90e — ci: Move forward Rust for Linux version to v7.1-rc1 (ojeda)
  • b7b501f — Do not use the canonical declaration for enum type building (dlrobertson)
  • 5ae4b31 — tests (bend-n)
  • a502187 — fix unnecessary transmute triggering on bitfield codegen (bend-n)
  • 0408333 — refactor: centralize comment generation checks (fixes #445) (naoNao89)
  • 44f451d — ci: Bump RFL kernel (emilio)
  • c2c1151 — ci: isolate DYLD_LIBRARY_PATH during git diff checks (Per Larsen)
  • 0d0a33b — features: Add some comments to appease clippy. (emilio)

🔒Security observations

The rust-bindgen codebase demonstrates generally good security practices with centralized dependency management and workspace linting. However, there are moderate concerns around the outdated MSRV (1.70.0 from June 2023) and loose dependency version constraints that could allow unintended updates. No critical vulnerabilities were identified in the static analysis. The project would benefit from updating the MSRV to a recent stable version and tightening dependency version constraints. The codebase is a code generation tool for FFI bindings, which inherently requires careful handling of unsafe code patterns—the linting configuration appears reasonable for this use case.

  • Medium · Outdated Minimum Supported Rust Version (MSRV) — Cargo.toml (workspace.package.rust-version = "1.70.0"), README.md. The project specifies MSRV as Rust 1.70.0, which was released in June 2023. Using older Rust versions may expose users to known security vulnerabilities in the Rust compiler and standard library that have been patched in newer versions. Fix: Consider updating MSRV to a more recent stable version (1.75.0 or later). Document the security implications and encourage users to upgrade.
  • Medium · Dependency Version Constraints Allow Broad Updates — Cargo.toml (workspace.dependencies). Several dependencies use loose version constraints (e.g., 'itertools = ">=0.10,<0.15"') that span multiple major versions. This increases the risk of breaking changes or security issues in transitive dependencies being silently pulled in during updates. Fix: Narrow version constraints where possible. For example, change 'itertools = ">=0.10,<0.15"' to more specific ranges like '>=0.12,<0.13' to reduce exposure to major version changes.
  • Low · Use of Wildcard Imports Suppressed in Lints — Cargo.toml (workspace.lints.clippy.wildcard_imports = "allow"). The workspace lints configuration explicitly allows 'wildcard_imports', which can reduce code clarity and make dependencies harder to track. This is a maintainability concern that could indirectly lead to security issues through less transparent code. Fix: Reconsider allowing wildcard imports. Enable this lint to encourage explicit imports, improving code clarity and auditability.
  • Low · TODO Comment in Lints Configuration — Cargo.toml (end of workspace.lints.clippy section). There are unresolved TODO comments in the lints configuration ("# These seem to"), indicating incomplete security/quality policy decisions. Fix: Complete the TODO by either removing the incomplete comment or resolving the outstanding linting decisions mentioned.

LLM-derived; treat as a starting point, not a security audit.


Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.

Healthy signals · rust-lang/rust-bindgen — RepoPilot