Thank you for your help everyone. @BigEpsilon:
I understand the difference seq vs array. An array is a fixed size from compile time (a C array with the size information stored in the type system), and a seq is closer to a std::vector in C++. My question is about setting the default values of the struct. You bring up a very good point that I didn't consider! I can just instantiate a variable of that type with no arguments, and set the tuple members that I need after. I like that better actually because it is more like C. I forgot that you could do that! @LeuGim: I am creating a constructor/initialization proc. This code is inside that function That template is a neat trick though! I have not wrapped my head around all the meta-programming available in nim, but I think it is one of the coolest parts of the language! @Krux02 My understanding is that a Tuple is closer to a C struct than an Object. In fact, the C code that nim generates for TextBuffer Tuple is a C struct with nothing extra, which is exactly what I want! Object has extra features like dynamic dispatch that I don't want.