Bird
Raised Fist0
Rustprogramming~10 mins

Integer types in Rust - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to declare a 32-bit signed integer variable named num with the value 10.

Rust
let num: [1] = 10;
Drag options to blanks, or click blank then click option'
Af32
Bu32
Ci32
Dbool
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using u32 which is unsigned and might not be intended here.
Using floating point types like f32 for integers.
2fill in blank
medium

Complete the code to declare an unsigned 8-bit integer variable named age with the value 25.

Rust
let age: [1] = 25;
Drag options to blanks, or click blank then click option'
Au8
Bi16
Cbool
Di8
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using signed types like i8 which allow negative numbers.
Using boolean type bool which is not numeric.
3fill in blank
hard

Fix the error in the code by choosing the correct integer type for the variable count initialized with 1000.

Rust
let count: [1] = 1000;
Drag options to blanks, or click blank then click option'
Ai16
Bu8
Ci8
Dbool
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using i8 or u8 which are too small for 1000.
Using bool which is not numeric.
4fill in blank
hard

Fill both blanks to create a dictionary that maps numbers to their squares for numbers 1 to 3, using the correct integer types and operators.

Rust
let squares = std::collections::HashMap::from([(1[1] 3, 1[2] 3)]);
Drag options to blanks, or click blank then click option'
A..=
B*
C+
D-
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using .. which excludes the last number.
Using addition or subtraction instead of multiplication for squares.
5fill in blank
hard

Fill both blanks to create a HashMap that stores the length of each word only if the length is greater than 3.

Rust
let lengths = words.iter().filter(|&word| word.len() [1] 3).map(|word| (word.to_string(), word.len() [2] ,)).collect::<std::collections::HashMap<_, _>>();
Drag options to blanks, or click blank then click option'
A>
B-
C,
D+
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using incorrect comparison operators in filter.
Not separating tuple elements with a comma.
Using addition instead of subtraction for length adjustment.

Practice

(1/5)
1. Which Rust integer type can store only positive whole numbers including zero?
easy
A. u32
B. i32
C. f32
D. bool

Solution

  1. Step 1: Understand signed vs unsigned integers

    Signed integers (i32) store negative and positive numbers, unsigned (u32) store only zero and positive numbers.
  2. Step 2: Identify the type that stores only positive whole numbers

    u32 is unsigned 32-bit integer, so it stores only positive whole numbers including zero.
  3. Final Answer:

    u32 -> Option A
  4. Quick Check:

    Unsigned integer = u32 [OK]
Hint: Unsigned integers start with 'u' and hold only positive numbers [OK]
Common Mistakes:
  • Confusing signed and unsigned types
  • Choosing floating-point types for whole numbers
  • Thinking bool is an integer type
2. Which of the following is the correct way to declare a 16-bit signed integer variable named x with value 100 in Rust?
easy
A. let x: u16 = 100;
B. let x: i16 = 100;
C. let x i16 = 100;
D. let x: int16 = 100;

Solution

  1. Step 1: Check Rust syntax for typed variable declaration

    Rust uses let variable_name: type = value; syntax.
  2. Step 2: Identify the correct 16-bit signed integer type

    i16 is the 16-bit signed integer type in Rust.
  3. Final Answer:

    let x: i16 = 100; -> Option B
  4. Quick Check:

    Typed variable declaration with i16 = let x: i16 = 100; [OK]
Hint: Use 'let var: i16 = value;' for 16-bit signed integers [OK]
Common Mistakes:
  • Using unsigned type u16 instead of signed
  • Using invalid type name int16
  • Incorrect syntax like missing colon
3. What will be the output of this Rust code?
let a: i8 = 127;
let b: i8 = 1;
let c = a.wrapping_add(b);
println!("{}", c);
medium
A. 128
B. 0
C. -128
D. Overflow error

Solution

  1. Step 1: Understand i8 max value and wrapping_add behavior

    The max value for i8 is 127. Adding 1 causes overflow. wrapping_add wraps around instead of panicking.
  2. Step 2: Calculate the wrapped result

    127 + 1 wraps to -128 in i8 range.
  3. Final Answer:

    -128 -> Option C
  4. Quick Check:

    Wrapping addition overflow wraps to -128 [OK]
Hint: wrapping_add wraps on overflow, not error [OK]
Common Mistakes:
  • Expecting 128 which is out of i8 range
  • Thinking it causes runtime panic
  • Confusing wrapping_add with normal addition
4. Identify the error in this Rust code snippet:
let x: u8 = -5;
medium
A. Missing semicolon
B. Type u8 does not exist
C. Variable name invalid
D. Negative value assigned to unsigned integer

Solution

  1. Step 1: Check the type and value compatibility

    u8 is unsigned 8-bit integer and cannot hold negative values.
  2. Step 2: Identify the error cause

    Assigning -5 to u8 causes a type mismatch error.
  3. Final Answer:

    Negative value assigned to unsigned integer -> Option D
  4. Quick Check:

    Unsigned integer cannot hold negative values [OK]
Hint: Unsigned types cannot hold negative numbers [OK]
Common Mistakes:
  • Ignoring negative sign allowed in unsigned types
  • Thinking semicolon is missing
  • Assuming variable name is invalid
5. You need to store the number of stars in the Milky Way galaxy, approximately 20,000,000,000,000,000,000 (20 quintillion). Which Rust integer type should you choose to store this number safely?
hard
A. u128
B. i64
C. u64
D. i32

Solution

  1. Step 1: Understand the size limits of integer types

    u64 max is about 18 quintillion, which cannot hold 20 quintillion. i64 max is about 9 quintillion. u128 is necessary.
  2. Step 2: Choose the type that safely stores 20 quintillion

    u128 can store very large positive integers up to 3.4e38, safely holding 20 quintillion.
  3. Final Answer:

    u128 -> Option A
  4. Quick Check:

    Use u128 for very large positive integers [OK]
Hint: Use u128 for very large positive integers beyond u64 [OK]
Common Mistakes:
  • Choosing signed types unnecessarily
  • Using i32 which is too small
  • Assuming u64 is always enough without checking limits
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard