A struct in Rust is a custom data type that lets you group related values together under one name, like a box holding different items.
Click to reveal answer
beginner
How do you define a simple struct with two fields: name (String) and age (u32)?
You write:
struct Person {
name: String,
age: u32,
}
This creates a new type called Person with two pieces of data.
Click to reveal answer
intermediate
What is the difference between a tuple struct and a classic struct in Rust?
A classic struct names each field, like name and age. A tuple struct groups values without names, like struct Color(u8, u8, u8);.
Click to reveal answer
beginner
How do you create an instance of a struct in Rust?
You write the struct name and provide values for each field, like: <pre>let p = Person { name: String::from("Alice"), age: 30 };</pre>
Click to reveal answer
beginner
Why are structs useful in programming?
Structs help organize data clearly, like putting related things in one box. This makes code easier to read, understand, and maintain.
Click to reveal answer
Which keyword is used to define a struct in Rust?
Arecord
Bclass
Cstruct
Dtype
✗ Incorrect
Rust uses the keyword struct to define a new struct type.
How do you access the field age of a struct instance person?
Aperson.age
Bperson->age
Cperson["age"]
Dperson::age
✗ Incorrect
In Rust, you access struct fields using dot notation, like person.age.
What does this struct definition represent?
struct Point(i32, i32);
AA tuple struct with two i32 values
BAn enum with two variants
CA struct with named fields x and y
DA function returning two i32 values
✗ Incorrect
This is a tuple struct holding two i32 values without field names.
Which of these is a valid way to create a struct instance?
Alet p = new Person("Bob", 25);
Blet p = Person(name: "Bob", age: 25);
Clet p = Person("Bob", 25);
Dlet p = Person { name: "Bob".to_string(), age: 25 };
✗ Incorrect
You create a struct instance by naming the fields inside curly braces.
What happens if you try to create a struct instance but miss a field?
ARust fills the missing field with a default value
BRust throws a compile-time error
CRust ignores the missing field
DRust sets the missing field to null
✗ Incorrect
Rust requires all fields to be initialized; missing fields cause a compile error.
Explain how to define a struct in Rust and create an instance of it.
Think about how you group related data and then use it.
You got /4 concepts.
Describe the difference between a classic struct and a tuple struct in Rust.
One uses names for fields, the other uses positions.
You got /3 concepts.
Practice
(1/5)
1. What is the purpose of defining a struct in Rust?
easy
A. To write a loop
B. To create a new function
C. To handle errors
D. To group related data together under one name
Solution
Step 1: Understand what a struct represents
A struct is used to group related pieces of data together, like a blueprint for an object.
Step 2: Compare options to the definition
Only To group related data together under one name correctly describes grouping related data under one name, which is the purpose of a struct.
Final Answer:
To group related data together under one name -> Option D
Quick Check:
Struct groups data = C [OK]
Hint: Structs group data fields under one name [OK]
Common Mistakes:
Thinking structs define functions
Confusing structs with loops
Assuming structs handle errors
2. Which of the following is the correct way to define a struct named Person with fields name (string) and age (u32)?
easy
A. struct Person { name: String, age: u32 }
B. struct Person(name: String, age: u32);
C. Person struct { name: String; age: u32 }
D. struct Person { name String, age u32 }
Solution
Step 1: Recall Rust struct syntax
Rust structs use the syntax: struct Name { field1: Type1, field2: Type2 } with commas and colons.
Step 2: Check each option
struct Person { name: String, age: u32 } matches correct syntax with colons and commas. Options A, B, and C have syntax errors like missing colons, wrong punctuation, or wrong order.
Final Answer:
struct Person { name: String, age: u32 } -> Option A
Quick Check:
Correct struct syntax uses colons and commas = D [OK]
Hint: Use colons and commas inside braces for struct fields [OK]
Common Mistakes:
Omitting colons between field names and types
Using semicolons instead of commas
Wrong order of keywords
3. What will be the output of this Rust code?
struct Point { x: i32, y: i32 }
fn main() {
let p = Point { x: 5, y: 10 };
println!("({}, {})", p.x, p.y);
}
medium
A. Point { x: 5, y: 10 }
B. (10, 5)
C. (5, 10)
D. Compilation error
Solution
Step 1: Understand struct initialization and field access
The struct Point is created with x=5 and y=10. Accessing p.x and p.y prints these values.
Step 2: Analyze the println! macro
The format string "({}, {})" prints the two values separated by a comma and space, so output is (5, 10).
Final Answer:
(5, 10) -> Option C
Quick Check:
Print fields x=5, y=10 as (5, 10) [OK]
Hint: Print struct fields by accessing them with dot notation [OK]
Common Mistakes:
Mixing up field values order
Expecting debug print without implementing Debug trait
Assuming struct prints automatically
4. Identify the error in this struct definition:
struct Car {
model String,
year: u32,
}
medium
A. Missing colon between field name and type for model
B. Missing semicolon after struct
C. Extra comma after last field
D. Incorrect struct keyword
Solution
Step 1: Check field syntax
Each field must have a colon between the name and type. Here, model String misses the colon.
Step 2: Verify other parts
Commas after fields are allowed, no semicolon needed after struct, and struct keyword is correct.
Final Answer:
Missing colon between field name and type for model -> Option A
Quick Check:
Field syntax requires colon = B [OK]
Hint: Field name and type must be separated by a colon [OK]
Common Mistakes:
Omitting colon between field and type
Thinking semicolon needed after struct
Removing commas after fields
5. You want to define a struct Book with fields title (String), author (String), and pages (u32). Then create an instance with title "Rust Guide", author "Alice", and pages 250. Which code correctly does this?
hard
A. struct Book(title: String, author: String, pages: u32);
let my_book = Book("Rust Guide", "Alice", 250);
B. struct Book { title: String, author: String, pages: u32 }
let my_book = Book { title: "Rust Guide".to_string(), author: "Alice".to_string(), pages: 250 };
C. struct Book { title String, author String, pages u32 }
let my_book = Book { title: "Rust Guide", author: "Alice", pages: 250 };
D. struct Book { title: String, author: String, pages: u32 }
let my_book = Book { title: "Rust Guide", author: "Alice", pages: "250" };
Solution
Step 1: Check struct definition syntax
struct Book { title: String, author: String, pages: u32 }
let my_book = Book { title: "Rust Guide".to_string(), author: "Alice".to_string(), pages: 250 }; correctly defines the struct with colons and commas. struct Book(title: String, author: String, pages: u32);
let my_book = Book("Rust Guide", "Alice", 250); uses tuple struct syntax incorrectly for this case. struct Book { title String, author String, pages u32 }
let my_book = Book { title: "Rust Guide", author: "Alice", pages: 250 }; misses colons. struct Book { title: String, author: String, pages: u32 }
let my_book = Book { title: "Rust Guide", author: "Alice", pages: "250" }; uses a string for pages which should be u32.
Step 2: Check instance creation
struct Book { title: String, author: String, pages: u32 }
let my_book = Book { title: "Rust Guide".to_string(), author: "Alice".to_string(), pages: 250 }; converts string literals to String with to_string(), which is required. struct Book(title: String, author: String, pages: u32);
let my_book = Book("Rust Guide", "Alice", 250); uses tuple struct syntax incorrectly. struct Book { title: String, author: String, pages: u32 }
let my_book = Book { title: "Rust Guide", author: "Alice", pages: "250" }; uses wrong type for pages.
Final Answer:
struct Book { title: String, author: String, pages: u32 }
let my_book = Book { title: "Rust Guide".to_string(), author: "Alice".to_string(), pages: 250 }; -> Option B
Quick Check:
Struct fields need colons and correct types = A [OK]
Hint: Use colons for fields and convert literals to String [OK]
Common Mistakes:
Using tuple struct syntax instead of named fields
Omitting colons in struct fields
Assigning wrong types to fields
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.