64 lines
1.2 KiB
Plaintext

# 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;
}