I recently started learning rust, and I was ready for one hell of a fight. I heard all those horror Storys about the compiler complaining about every single detail and that developing rust means having a constant fight with the compiler about seemingly irrelevant things. However, so far I have to tell, that while its somewhat true, that the compiler is somewhat picky, it is incredibly helpful. Never before have I seen such good and helpful compiler messages. It not only says what you did wrong, but also gives direct help on what to do to fix your code. I also really like, that it gives you direct references to the rust book in the compiler messages.

Prior to starting my journey with rust I did quite a lot of python, some C and some bash and their interpreter/compiler messages are nothing when comparing them with rust. Especially the bash error messages are awful if you do not know what they mean and how to fix them.

  • TehPers@beehaw.org
    link
    fedilink
    English
    arrow-up
    0
    ·
    12 days ago

    I was able to turn the string into a char iterator, but I could not figure out how to change elements of said iterator (this can be seen at line 55).

    You have a few options here, but the easiest is to collect into a Vec<char>, replace the character there, then do a String::from_iter(chars) to get it back as a string.

    You can also manipulate the original chars iterator directly through takes, skips, and so on and collect it into a string, but that’s more complicated.

    Also, “character” is such a complicated concept because unicode is not simple. If you can work directly with bytes though, you can convert the string to a Vec<u8> (which is the underlying type for String), manipulate that directly, then do String::from_utf8 (or the same method for str) to convert it back to a string.

    • semi [he/him]@lemmy.ml
      link
      fedilink
      arrow-up
      0
      ·
      12 days ago

      Since OP will want to do a lot of character based operations for the hangman game, she could also consider using Vec<char> as an internal representation everywhere and only converting into String for display purposes.

      • TehPers@beehaw.org
        link
        fedilink
        English
        arrow-up
        0
        ·
        12 days ago

        I agree, this makes the most sense. I was under the assumption they wanted to keep it as a String, but your suggestion is a better way to approach the problem if they’re able to do that.