Rust seems not to recognize the trait bound on line 14 as “using”
'f, C, so I added a PhantomData to use those. However, when constructing the type the recommended
_phantom: &PhantomData results in a lifetime mismatch, because
PhantomData in that case has a lifetime bounded by the function body, which is smaller than
'f. So I added the function on line 36 which “upgrades” the lifetime to
'f as required.
This seems pretty gross. Is there a better way?