A struct in Rust is a custom data type that lets you group related values together under one name, like a blueprint for creating objects with specific fields.
Click to reveal answer
beginner
How do you create an instance of a struct in Rust?
You create an instance by specifying the struct name followed by curly braces containing field names and their values, like <code>let user = User { name: String::from("Alice"), age: 30 };</code>.
Click to reveal answer
intermediate
What happens if you omit a field when creating a struct instance?
Rust will give a compile-time error because all fields must be initialized unless you use struct update syntax or provide default values.
Click to reveal answer
intermediate
What is struct update syntax in Rust?
Struct update syntax lets you create a new struct instance by copying fields from another instance, changing only some fields, like <code>let new_user = User { age: 31, ..old_user };</code>.
Click to reveal answer
intermediate
Can you create a struct instance without naming all fields explicitly?
Yes, using struct update syntax or tuple structs, but normal structs require all fields to be named and initialized unless you use defaults or update syntax.
Click to reveal answer
How do you create a struct instance in Rust?
ADeclare variables without struct name
BUse the struct name with curly braces and specify all fields with values
CUse parentheses with values only
DCall a constructor function without specifying fields
✗ Incorrect
In Rust, you create a struct instance by writing the struct name followed by curly braces with all fields and their values.
What will happen if you leave out a field when creating a struct instance?
ARust will fill it with zero automatically
BRust will ignore the missing field
CRust will fill it with null
DRust will give a compile-time error
✗ Incorrect
Rust requires all fields to be initialized unless you use struct update syntax or default values, otherwise it gives a compile-time error.
What does the struct update syntax do?
ACreates a struct without any fields
BDeletes fields from a struct
CCopies all fields from another instance except those you override
DUpdates the struct definition
✗ Incorrect
Struct update syntax copies fields from an existing instance and lets you override some fields with new values.
Which of these is a valid way to create a struct instance named User with fields name and age?
AUser { name: "Bob", age: 25 }
BUser("Bob", 25)
CUser(name = "Bob", age = 25)
Dnew User("Bob", 25)
✗ Incorrect
Rust requires named fields inside curly braces to create a struct instance.
Can you create a struct instance by copying another and changing one field?
AYes, using struct update syntax
BNo, you must create a new instance from scratch
CYes, by assigning directly to the struct type
DNo, Rust does not support copying structs
✗ Incorrect
Struct update syntax allows creating a new instance by copying fields from another and changing some.
Explain how to create an instance of a struct in Rust and what rules you must follow.
Think about how you write the struct name and what you put inside the braces.
You got /4 concepts.
Describe what struct update syntax is and give an example of when you might use it.
It helps to avoid repeating all fields when only a few change.
You got /4 concepts.
Practice
(1/5)
1. What is the correct way to create an instance of a struct Person with fields name and age in Rust?
easy
A. let p = new Person { name: "Alice", age: 30 };
B. let p = Person("Alice", 30);
C. let p = Person { name: String::from("Alice"), age: 30 };
D. let p = Person(name = "Alice", age: 30);
Solution
Step 1: Understand struct instance syntax
In Rust, you create a struct instance by naming the struct and assigning values to each field inside curly braces.
Step 2: Match the correct syntax
let p = Person { name: String::from("Alice"), age: 30 }; uses Person { name: String::from("Alice"), age: 30 }, which is the correct way. Other options use incorrect syntax like tuple style or assignment inside parentheses.
Final Answer:
let p = Person { name: String::from("Alice"), age: 30 }; -> Option C
Quick Check:
Struct instance = StructName { field: value } [OK]
Hint: Use StructName { field: value } to create instances [OK]
Common Mistakes:
Using parentheses instead of curly braces
Trying to assign fields with = inside parentheses
Forgetting to convert string literals to String type
2. Which of the following is a syntax error when creating a struct instance Car with fields make and year?
easy
A. let c = Car { make: String::from("Toyota"), year: 2020 };
B. let c = Car { make: "Toyota", year: 2020 };
C. let c = Car { make: String::from("Toyota"), year: "2020" };
D. let c = Car { make: String::from("Toyota"), year: 2020 }
Solution
Step 1: Check for syntax errors
let c = Car { make: String::from("Toyota"), year: 2020 } is missing the semicolon after the let statement, which causes a syntax error in Rust.
Step 2: Review other options
Options A, B, and C have semicolons and valid struct syntax, though B and C may cause type errors if field types do not match.
Final Answer:
let c = Car { make: String::from("Toyota"), year: 2020 } -> Option D
Quick Check:
Semicolon required after let statements [OK]
Hint: Match field types exactly when creating struct instances [OK]
Common Mistakes:
Assigning string literals where String is expected without conversion
Using wrong data types for fields
Omitting semicolons (sometimes allowed but risky)
3. Given the struct and instance creation below, what will be printed?
struct Point {
x: i32,
y: i32,
}
fn main() {
let p = Point { x: 5, y: 10 };
println!("({}, {})", p.x, p.y);
}
medium
A. (5, 10)
B. (10, 5)
C. (x, y)
D. Compilation error
Solution
Step 1: Understand struct fields and instance values
The struct Point has fields x and y. The instance p assigns x = 5 and y = 10.
Step 2: Analyze the print statement
The println! macro prints the values of p.x and p.y in order, so output is (5, 10).
Final Answer:
(5, 10) -> Option A
Quick Check:
Print fields in order = (5, 10) [OK]
Hint: Print fields in order they appear in code [OK]
Common Mistakes:
Mixing up field order in print
Expecting field names printed instead of values
Assuming compilation error without reason
4. Identify the error in the following code that tries to create a struct instance:
struct Book {
title: String,
pages: u32,
}
fn main() {
let b = Book { title: "Rust Book", pages: 300 };
}
medium
A. Missing semicolon after struct definition
B. String literal assigned directly to String field without conversion
C. Field name 'pages' is misspelled
D. Struct instance missing field values
Solution
Step 1: Check field types and assigned values
The field title is of type String, but the code assigns a string literal "Rust Book" directly, which is a "str" type, causing a type mismatch.
Step 2: Confirm other parts are correct
The field pages is correctly assigned an integer. The struct definition and instance have correct syntax otherwise.
Final Answer:
String literal assigned directly to String field without conversion -> Option B
Quick Check:
Convert "str" to String with String::from() [OK]
Hint: Convert string literals to String with String::from() [OK]
Common Mistakes:
Assigning "str" directly to String fields
Misspelling field names
Omitting required fields in instance
5. You have a struct Employee with fields name: String, id: u32, and active: bool. How do you create a new instance with name as "John", id as 101, and active as true, using shorthand for the active field if you have a variable active set to true?
hard
A. let active = true;
let e = Employee { name: String::from("John"), id: 101, active };
B. let active = true;
let e = Employee { name: "John", id: 101, active: active };
C. let e = Employee { name: String::from("John"), id: 101, active: true };
D. let active = true;
let e = Employee { name: String::from("John"), id: 101, active = active };
Solution
Step 1: Understand field shorthand syntax
If a variable name matches a struct field name, you can use shorthand by just writing the variable name without field: value.
Step 2: Identify correct usage
let active = true;
let e = Employee { name: String::from("John"), id: 101, active }; uses shorthand correctly: active variable is used directly as a field. let active = true;
let e = Employee { name: "John", id: 101, active: active }; uses explicit active: active but has type mismatch on name. let e = Employee { name: String::from("John"), id: 101, active: true }; does not use the variable. let active = true;
let e = Employee { name: String::from("John"), id: 101, active = active }; uses invalid syntax with = inside struct initialization.
Final Answer:
let active = true;
let e = Employee { name: String::from("John"), id: 101, active }; -> Option A
Quick Check:
Use shorthand when variable name matches field name [OK]
Hint: Use field shorthand: just write variable name if it matches field [OK]
Common Mistakes:
Using = instead of : in struct initialization
Not converting string literals to String
Not using shorthand when possible
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.