pub fn assemble_with(
file: &str,
defines: &[(&str, &str)],
resolve: impl Fn(&str) -> Option<&'static str>,
) -> StringExpand description
The same assembly against a caller-supplied resolver, which is how the
device crate lets a hot-reload build prefer the checkout’s copy of a shader
(and of every fragment it splices) over the embedded one. A resolver that
returns None falls back to the embedded text, so a missing file loses the
edit rather than the shader.