64 lines
1.2 KiB
Plaintext
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;
|
|
} |