Rust Container Cheat Sheet
from snaggen@programming.dev to rust@programming.dev on 26 Jun 2024 10:52
https://programming.dev/post/16059115

Found this on Mastodon fosstodon.org/@dpom/112681955888465502 , and it is a very nice overview of the containers and their layout.

#rust

threaded - newest

SorteKanin@feddit.dk on 26 Jun 2024 11:42 next collapse

Nice sheet, though I have a few critiques:

  1. Why does it say where T: Sized for references &T? A reference can definitely point to an unsized type, e.g. &str.
  2. The yellow boxes really mean “must be heap allocated” - all the other references (&T, &[T] and &dyn Trait) may either point to the stack or the heap.
jameseb@lemm.ee on 26 Jun 2024 13:09 next collapse

  1. Why does it say where T: Sized for references &T? A reference can definitely point to an unsized type, e.g. &str.

I think the point being made is that the layout shown only applies for Sized T. Layouts for &[T] and &dyn Trait are shown elsewhere on the sheet. &str is noted under &[T].

Edit: although, similar considerations would apply to other pointer types, but that isn’t noted on the sheet except for Box<[T]>

sgued@programming.dev on 26 Jun 2024 17:16 collapse

Because when T is !Sized, the layout is different, it looks more like the layout of &[T].

sgued@programming.dev on 26 Jun 2024 17:16 collapse

This is outdatded. Mutexes don’t allocate anymore. That’s how Mutex::new can be const.