A `struct` bundles related fields under one name, exactly as in Solidity. You construct an instance with keyword arguments.
struct User:
name: String[32]
age: uint256
users: public(HashMap[address, User])
@external
def set_user(name: String[32], age: uint256):
self.users[msg.sender] = User({name: name, age: age})Structs can live in storage, memory, or be passed as function arguments and return values, just like any other Vyper type.