incomplete forward definitions in C are almost exclusively used either to hide internal structures or for recursive types. The former is done with exported/unexported fields, the latter just works in Nim, as long as the types are declared in the same type section, so there's no need for them in Nim.