When returning an immutable reference to a private struct field. (On mobile and used vertical bars instead of a bunch of HTML codes)

  • RunAwayFrog@sh.itjust.works
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    Note: the ᐸᐳ characters used below are Canadian Aboriginal syllabics because Lemmy devs haven’t fixed broken input sanitization yet.


    A vec and a string are basically the same thing (a series of bytes)

    Everything is a series of bytes! I thought you were going to mention that both are fat pointers. But that “series of bytes” description is quite weird.

    This makes handling it much easier because you can still iterate over it

    This is not a valid consideration/objection, as Options are iterable and you can flatten them:

    fn main() {
      let v = vec![1,2,3];
      for n in Some(&v).into_iter().flatten() {
        eprintln!("{n}");
      }
      for n in None::ᐸ&Veci32ᐳᐳ.into_iter().flatten() {
        eprintln!("{n}");
      }
    }
    

    This might involve the compiler making an allocation of an empty array but most of them (gcc, ghc) will now what you are doing and optimize the null check on the empty array to a bool check

    This paragraph appears to be out of place in the context of a Rust discussion.