@buherator no studies I know, but from personal experience using github copilot via vscod(ium) integration for #rustlang coding and having a functional programming background in #haskell, (data) types come first.. So my workflow is kind of
Either start with module header (rustdoc) natural language description and let the LLM help deriving the concrete datatypes, and/or:
Start with rust datatypes, let the llm derive rustdoc, fix it, let the llm refactor the datatypes.
@buherator as always, dependents of how the context looks like... F.e. I think I kind of stress the rust type level quite much with doing some type level programming, so in a codebase like that (which the github llm takes into account) it also suggest pretty nice suggestions. When starting from scratch it tends to suggest more classic value level programming.
@buherator the nice thing there is: the llm helps me with complex type system stuff a lot, if I ask for that. Coming closer to dependent types you could catch huge amount of bug classes at compile time by the type checker. This is pretty handy when working with LLMs as if it suggests bugs - the typesystem will more likely catch those ... On the other hand i have "the feeling" that it helps the LLM to understand the semantics of the code better.