# struct (0-struct.org) A struct is a thing that holds other things together. In everyday talk, it is short for structure: a building, a framework, or any organized setup. ## What a model may hear - C struct (C, C++, and systems programming): Expect a fixed block of named fields in memory, and may write or read code that treats data as a packed binary layout - Rust struct (Rust): Expect an owned or borrowed composite type with named fields, and may suggest ownership patterns, lifetimes, or derive macros - Go struct (Go): Expect a value type with methods attached, and may assume struct embedding or interface satisfaction is relevant - protocol struct (networking and serialization): Expect a fixed packet or message format, and may propose binary layouts for wire formats like protobuf or capnp - data structure (computer science broadly): Generalize to any organized collection of data, and may discuss algorithms for trees, graphs, or hash tables ## Where people and models part ways - Says: "Give me a struct for my team" Means: I want an organizational chart or team structure May be taken as: The model writes a C or Go code block defining a struct type with employee fields Say instead: "Give me an organizational chart for my team" - Says: "How do I build a struct for this?" Means: How do I design the overall framework or plan? May be taken as: The model gives programming syntax for defining a composite data type Say instead: "How do I design the overall framework for this project?" - Says: "The struct is falling apart" Means: The building or organization is failing May be taken as: The model debugs memory alignment or field layout in a data structure Say instead: "The organization or building is falling apart" - Says: "I need a struct with flexible members" Means: I need an adaptable organization or framework May be taken as: The model explains C flexible array members or Rust generic structs Say instead: "I need a flexible framework or adaptable organization" ## Tips - Say 'data structure' only when you mean a programming concept, or 'structure' for the everyday sense - If you want code, name the language: 'a C struct', 'a Rust struct' - Avoid 'struct' alone when asking about organizations, buildings, or plans - If the model offers code you did not want, say 'I meant the general concept, not programming' - Use 'layout' or 'schema' if you need a model to think about shape without assuming a specific language ## Often confused with - class: implies inheritance and methods, not just grouped data - record: often implies immutability or database rows - tuple: unnamed fields, ordered by position - interface: behavior contract without data storage - union: overlapping memory, one field active at a time - schema: describes shape without fixing memory layout