Bird
Raised Fist0
DSA Rustprogramming~10 mins

String Basics and Memory Representation in DSA Rust - Interactive Practice

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

Complete the code to create a new empty String in Rust.

DSA Rust
let mut s = String::[1]();
Drag options to blanks, or click blank then click option'
Anew
Blen
Cpush
Dfrom
Attempts:
3 left
💡 Hint
Common Mistakes
Using from without an argument causes an error.
Trying to use push to create a String.
2fill in blank
medium

Complete the code to convert a string slice to a String.

DSA Rust
let s = "hello".[1]();
Drag options to blanks, or click blank then click option'
Apush_str
Bclone
Cto_string
Dlen
Attempts:
3 left
💡 Hint
Common Mistakes
Using clone on a &str does not create a String.
Using push_str requires a mutable String.
3fill in blank
hard

Fix the error in the code to append a character to a String.

DSA Rust
let mut s = String::new();
s.[1]('a');
Drag options to blanks, or click blank then click option'
Apush
Bappend
Cadd
Dinsert
Attempts:
3 left
💡 Hint
Common Mistakes
Using append which expects a &str, not a char.
Using add which is not a method on String.
4fill in blank
hard

Fill both blanks to create a String from a &str and then get its length.

DSA Rust
let s = String::[1]("hello");
let len = s.[2]();
Drag options to blanks, or click blank then click option'
Afrom
Bto_string
Clen
Dcapacity
Attempts:
3 left
💡 Hint
Common Mistakes
Using to_string as a static method instead of on a &str.
Using capacity instead of len for length.
5fill in blank
hard

Fill both blanks to create a String, append a &str, and then print it.

DSA Rust
let mut s = String::[1]("Hello");
s.[2](" World");
println!("{}", s);
Drag options to blanks, or click blank then click option'
Afrom
Bpush_str
Dto_string
Attempts:
3 left
💡 Hint
Common Mistakes
Using push instead of push_str for &str.
Trying to call to_string on String before printing.

Practice

(1/5)
1. What does the String type in Rust represent?
easy
A. A growable, heap-allocated string
B. A fixed-size array of characters
C. A pointer to a string literal
D. An immutable string slice

Solution

  1. Step 1: Understand Rust string types

    Rust has two main string types: String and string slices (&str). String is growable and stored on the heap.
  2. Step 2: Compare options with definitions

    A growable, heap-allocated string correctly describes String as growable and heap-allocated. Others describe slices or fixed arrays.
  3. Final Answer:

    A growable, heap-allocated string -> Option A
  4. Quick Check:

    String = growable heap string [OK]
Hint: Remember: String is growable and heap-allocated [OK]
Common Mistakes:
  • Confusing String with &str (string slice)
  • Thinking String is fixed size
  • Assuming String is immutable
2. Which of the following is the correct way to create a new empty String in Rust?
easy
A. let s = String::new();
B. let s = String();
C. let s = new String();
D. let s = String[];

Solution

  1. Step 1: Recall Rust String creation syntax

    In Rust, String::new() creates a new empty String.
  2. Step 2: Check each option syntax

    let s = String::new(); uses correct Rust syntax. The other options use invalid Rust syntax for creating a String.
  3. Final Answer:

    let s = String::new(); -> Option A
  4. Quick Check:

    String::new() creates empty String [OK]
Hint: Use String::new() to create empty String [OK]
Common Mistakes:
  • Using parentheses like a function call without ::new()
  • Trying to use new keyword like other languages
  • Using array brackets for String
3. What will be the output of this Rust code?
let s = String::from("hello");
let slice = &s[0..2];
println!("{}", slice);
medium
A. Runtime error
B. hel
C. hello
D. he

Solution

  1. Step 1: Understand string slicing in Rust

    The slice &s[0..2] takes characters from index 0 up to but not including 2.
  2. Step 2: Extract substring from "hello"

    Characters at index 0 and 1 are 'h' and 'e', so the slice is "he".
  3. Final Answer:

    he -> Option D
  4. Quick Check:

    Slice 0..2 of "hello" = "he" [OK]
Hint: Slice 0..n means characters from 0 up to n-1 [OK]
Common Mistakes:
  • Assuming slice includes index 2
  • Expecting full string output
  • Thinking slicing causes runtime error
4. Identify the error in this Rust code snippet:
let s = String::from("hello");
let slice = &s[0..4];
println!("{}", slice);
let ch = &s[4];
medium
A. Slice range 0..4 is invalid
B. Cannot index String with single usize
C. Missing semicolon after println!
D. String::from is not valid

Solution

  1. Step 1: Check indexing rules for String

    Rust does not allow indexing a String with a single usize like s[4] because strings are UTF-8 encoded and indexing by byte is unsafe.
  2. Step 2: Verify other parts

    Slice &s[0..4] is valid. Semicolons and String::from usage are correct.
  3. Final Answer:

    Cannot index String with single usize -> Option B
  4. Quick Check:

    Single index on String causes error [OK]
Hint: Use slices, not single index, to access String parts [OK]
Common Mistakes:
  • Trying to access String by single index
  • Confusing slice range validity
  • Ignoring Rust UTF-8 string rules
5. Given a UTF-8 encoded Rust String containing emoji and letters, which method safely returns the number of characters (not bytes)?
hard
A. s.len()
B. s.as_bytes().len()
C. s.chars().count()
D. s.bytes().count()

Solution

  1. Step 1: Understand difference between bytes and characters

    UTF-8 strings store characters as 1 or more bytes. len() returns byte count, not character count.
  2. Step 2: Identify method counting characters

    s.chars().count() iterates over Unicode scalar values (characters) and counts them correctly.
  3. Final Answer:

    s.chars().count() -> Option C
  4. Quick Check:

    chars().count() counts characters, not bytes [OK]
Hint: Use chars().count() for character count, not len() [OK]
Common Mistakes:
  • Using len() which counts bytes, not characters
  • Confusing bytes() with chars()
  • Assuming as_bytes().len() counts characters
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