# Create an enum enum AnimalType { Dog, Cat, } # Create a struct struct Pet { name: [char], # A list of characters age: uint, # An unsigned 32-bit integer type: AnimalType, living: bool, } # Create a function that can be called on a Pet fn on Pet rename(newName: [char]) { self.name = newName; } # Create another struct struct Person { pet: Pet, name: [char], age: uint, living: bool, } fn on Person growUp() { self.age += 1; } fn main() -> int { # Create an instance of Pet # "let" creates an immutable binding var dog = Pet { name: "Fido", age: 3, type: AnimalType.Dog, }; # Create a (variable) instance of Person # "var" creates a mutable binding var person = Person { pet: dog, name: "Fred", age: 41, }; # Create a new name for the Pet var new_name = "George"; person.pet.rename(new_name); # Print out the person's name and age # Uses C for I/O printf("Person %s is %u years old.\n", person.name, person.age); if person.age % 2 == 0 { printf("Age is even\n"); } else { printf("Age is odd\n"); } *test[12](3); return 0; }