A Build-Depends: B
  Built-Using: ${dh-builtusing:B}
B Built-Using: C

C may not be installed.

Does the policy require that A is Built-Using: B *and C*?
The effects are transitive, so this does not seem necessary.

If yes, dh-builtusing should generate the Built-Using closure of B.
If no, most rust packages will be OK with

Static-Built-Using: ${dh-built-using:librust-*-dev}

--

Debhelper (>= 14) expands ${foo:Built-Using} automatically if the
variable is defined.

Dh-builtusing could then take as input a debhelper configuration file
like debian/foo.builtusing containing lines like Built-Using: gcc-*.

That would simplify it a lot and allow debhelper promises.
