Bird
Raised Fist0
DSA Rustprogramming~10 mins

How Strings Work Differently Across Languages in DSA Rust - Code Step by Step

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
Bto_string
Cpush
Dfrom
Attempts:
3 left
💡 Hint
Common Mistakes
Using from or to_string creates a String from existing data, not empty.
2fill in blank
medium

Complete the code to append a character to a String in Rust.

DSA Rust
let mut s = String::new();
s.[1]('a');
Drag options to blanks, or click blank then click option'
Apush_str
Bpush
Cappend
Dinsert
Attempts:
3 left
💡 Hint
Common Mistakes
Using push_str instead of push for a single character.
3fill in blank
hard

Fix the error in the code to convert a &str to a String.

DSA Rust
let s = "hello".[1]();
Drag options to blanks, or click blank then click option'
Ato_string
Bto_str
Cas_string
Dinto_string
Attempts:
3 left
💡 Hint
Common Mistakes
Using to_str or as_string which do not exist.
4fill in blank
hard

Fill both blanks to create a String from a &str and append another &str.

DSA Rust
let mut s = String::[1]("hello");
s.[2](" world");
Drag options to blanks, or click blank then click option'
Afrom
Bpush
Cpush_str
Dnew
Attempts:
3 left
💡 Hint
Common Mistakes
Using new instead of from to create String from &str.
Using push instead of push_str to append &str.
5fill in blank
hard

Fill all three blanks to create a String, append a char, and append a &str.

DSA Rust
let mut s = String::[1]();
s.[2]('!');
s.[3](" Welcome");
Drag options to blanks, or click blank then click option'
Anew
Bpush
Cpush_str
Dfrom
Attempts:
3 left
💡 Hint
Common Mistakes
Using from instead of new for empty String.
Using push_str for a char.
Using push for a &str.

Practice

(1/5)
1. In Rust, which of the following best describes how String differs from string types in some other languages like Python or JavaScript?
easy
A. String in Rust is immutable and fixed-length like Python strings.
B. String in Rust is a growable, heap-allocated UTF-8 encoded string.
C. String in Rust stores characters as UTF-16 code units internally.
D. String in Rust is a simple alias for a byte array without encoding.

Solution

  1. Step 1: Understand Rust's String type

    Rust's String is designed to be growable and stored on the heap, unlike fixed-length strings in some languages.
  2. Step 2: Compare with other languages

    Languages like Python have immutable strings, and JavaScript strings are UTF-16 encoded internally, but Rust uses UTF-8 encoding for String.
  3. Final Answer:

    String in Rust is a growable, heap-allocated UTF-8 encoded string. -> Option B
  4. Quick Check:

    Rust String = growable UTF-8 heap string [OK]
Hint: Remember Rust strings are UTF-8 and growable, unlike fixed immutable strings [OK]
Common Mistakes:
  • Thinking Rust strings are immutable like Python strings
  • Assuming Rust strings use UTF-16 encoding
  • Confusing String with byte arrays without encoding
2. Which of the following is the correct way to create a mutable String in Rust?
easy
A. let mut s = String::from("hello");
B. let s = "hello";
C. let s = String::new("hello");
D. let s = "hello".to_string();

Solution

  1. Step 1: Identify mutable string creation syntax

    In Rust, to create a mutable String, you declare it with mut and use String::from or to_string().
  2. Step 2: Check each option

    let s = "hello"; creates an immutable string slice (&str), not a String. let mut s = String::from("hello"); correctly creates a mutable String. let s = String::new("hello"); is invalid syntax. let s = "hello".to_string(); creates a String but lacks mut, making the binding immutable.
  3. Final Answer:

    let mut s = String::from("hello"); -> Option A
  4. Quick Check:

    Mutable String = let mut s = String::from(...) [OK]
Hint: Use let mut s = String::from(...) for mutable strings [OK]
Common Mistakes:
  • Using string literals without mut for mutability
  • Trying to use String::new("hello") which is invalid
  • Confusing string slices with String type
3. What will be the output of the following Rust code?
let s = String::from("hello");
let h = &s[0..1];
println!("{}", h);
medium
A. Runtime panic due to invalid UTF-8 slicing
B. he
C. h
D. hello

Solution

  1. Step 1: Understand Rust string slicing rules

    Rust strings are UTF-8 encoded, so slicing must be on valid UTF-8 boundaries. Index 0..1 slices the first byte only.
  2. Step 2: Check if slicing 0..1 is valid UTF-8

    For "hello", ASCII characters are 1 byte each, so 0..1 is valid and equals "h".
  3. Step 3: Confirm output

    println!("{}", h) where h = &s[0..1] = "h" outputs h.
  4. Final Answer:

    h -> Option C
  5. Quick Check:

    Slice 0..1 of "hello" = "h" [OK]
Hint: Remember ASCII chars are 1 byte, so 0..1 slice is valid [OK]
Common Mistakes:
  • Assuming slicing 0..1 causes panic always
  • Confusing byte index with character index
  • Expecting multiple characters from 0..1 slice
4. Identify the error in this Rust code snippet:
let s = String::from("Здравствуйте");
let slice = &s[0..1];
println!("{}", slice);
medium
A. No error, prints first character
B. Prints garbage characters
C. Compile-time error: invalid slice syntax
D. Runtime panic: slicing not on UTF-8 boundary

Solution

  1. Step 1: Analyze the string content and slicing

    The string "Здравствуйте" contains Cyrillic characters, each encoded in multiple bytes in UTF-8.
  2. Step 2: Check slicing 0..1 validity

    Slicing 0..1 takes only the first byte, which is not a valid UTF-8 character boundary for Cyrillic letters, causing a runtime panic.
  3. Final Answer:

    Runtime panic: slicing not on UTF-8 boundary -> Option D
  4. Quick Check:

    UTF-8 multi-byte chars require valid slice boundaries [OK]
Hint: Multi-byte UTF-8 chars cannot be sliced by single bytes [OK]
Common Mistakes:
  • Assuming slicing always works like ASCII
  • Ignoring UTF-8 multi-byte character boundaries
  • Expecting compile-time error instead of runtime panic
5. Given a Rust String containing Unicode text, which approach correctly iterates over each Unicode character safely?
hard
A. Using for c in s.chars() to iterate over Unicode scalar values.
B. Using for i in 0..s.len() and slicing &s[i..i+1] for each byte.
C. Using for c in s.bytes() to get each character.
D. Using for c in s.split(' ') to get characters.

Solution

  1. Step 1: Understand Rust string iteration methods

    s.chars() iterates over Unicode scalar values (characters) safely, respecting UTF-8 boundaries.
  2. Step 2: Evaluate other options

    Using for i in 0..s.len() and slicing &s[i..i+1] slices bytes which can cause invalid UTF-8. for c in s.bytes() iterates bytes, not characters. for c in s.split(' ') splits by spaces, not characters.
  3. Final Answer:

    Using for c in s.chars() to iterate over Unicode scalar values. -> Option A
  4. Quick Check:

    Use s.chars() for safe Unicode iteration [OK]
Hint: Use s.chars() to safely iterate Unicode characters [OK]
Common Mistakes:
  • Iterating bytes instead of characters
  • Slicing string by byte indices unsafely
  • Using split which divides by delimiter, not 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