I can add a data: (), to the initializer of nbd::Export to work around this, but this seems awkward and unfortunate. This doesn't seem like something where the never type needed to get involved in the first place.
Unfortunately​ this is another culprit of defaults not affecting type inference. Constructing nbd::Export::<_> doesn't constrain the Data generic any and leaves it as an unconstrained​ inference variable.
There are certainly times where I wish omitting the generics list meant “use all defaults” instead of “infer all,” but the former has at least as many annoying cases as the latter, if not actually many more.
Even with that, where is the ! coming in? I could understand it going "I don't know what type you want, this is underconstrained", but why did it work before while threatening to not work with the fallback change?
Exactly because () was used as a fallback type in cases of underconstrained type inference and the lint is warning in cases where that fallback occurs, AIUI.
Although, since choosing ! here would require !: Default, it's at least possible to determine () is the correct choice with a smidge of negative reasoning…
All of the underconstrained type fallback logics end up with weird edge case behaviors, unfortunately​.